Try to do it in combination of postponing email confirmation via allow_unconfirmed_access_for
and confirmed?
for specific actions, like described in similar question1 and question2.
BTW, starting from Devise 2.2.4 allow_unconfirmed_access_for
accepts nil
for unlimited access without confirmation.