Глядя на исходный код confirmable
, кажется, что он не будет отправлять электронные письма, если пользователь настроен на подтверждение при создании.
Прежде всего, вам необходимо определить, хотите ли вы, чтобы новый пользователь получал электронное письмо или нет. Я бы предложил добавить в форму флажок или альтернативно сопоставить адрес электронной почты со старой таблицей пользователей:
def create
# Form style
skip_email? = params[:user].delete(:skip_email)
# Old users style
skip_email? = !!OldUser.find_by_email(params[:user][:email])
@user = User.new(params[:user])
...
end
Предполагая, что вы выполнили одно из двух, вы получите логическое значение skip_email?
. Теперь вы можете сделать:
def create
skip_email? = true # See above
@user = User.new(params[:user])
@user.skip_confirmation!
if @user.save
...
end
end
skip_confirmation!
- это метод, который Devise добавляет к модели User. Вы можете найти исходный код Devise здесь .