As you don't want them to be able to login until they've later been confirmed by an admin, you can use skip_confirmation_notification!
instead of skip_confirmation!
. This will create the confirmation token and the user will need to be confirmed, but it won't send the email notification to enable them to confirm themselves. They won't be able to log in until they're confirmed. You can then call user.confirm!
for an admin to confirm the user later. This should do the job, but the source code/comments might be worth a browse:
https://github.com/plataformatec/devise/blob/master/lib/devise/models/confirmable.rb