Ответ 1
Подтверждение обратного вызова происходит после создания, поэтому это происходит в строке 1 вашего примера, прежде чем вы установите confirmed_at
вручную.
В соответствии с комментариями наиболее правильной задачей было бы использовать метод, предоставляемый для этой цели, #skip_confirmation!
. Настройка confirmed_at
вручную будет работать, но она обходит предоставленный API, что, по возможности, следует избегать.
Итак, что-то вроде:
user = User.new(user_attrs)
user.skip_confirmation!
user.save!
Оригинальный ответ:
Если вы передаете confirmed_at
вместе с вашими аргументами create
, почта не должна отправляться, поскольку проверка того, была ли или нет учетная запись уже "подтверждена", заключается в том, чтобы посмотреть, установлена ли эта дата.
User.create(
:email => data['email'],
:password => Devise.friendly_token[0,20],
:confirmed_at => DateTime.now
)
Это или просто используйте new
вместо create
для создания вашей пользовательской записи.