Разработать - создать учетную запись пользователя с подтвержденным без отправки по электронной почте? - PullRequest
58 голосов
/ 19 сентября 2011

Я интегрировал устройство с Facebook. Теперь, когда я создаю учетную запись пользователя после того, как пользователь вошел в свою учетную запись Facebook,

  user = User.create(:email => data["email"], 
                     :password => Devise.friendly_token[0,20]) 
  user.confirmed_at = DateTime.now
  user.save!

, хотя учетная запись была подтверждена, электронное письмо с подтверждением все еще отправляется. Любая идея, как я могу отключить электронную почту?

Ответы [ 2 ]

135 голосов
/ 19 сентября 2011

Подтверждение обратного вызова происходит после создания, поэтому оно происходит в строке 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 для создания своей пользовательской записи.

11 голосов
/ 02 июля 2015

Если вы просто хотите запретить отправку электронной почты, вы можете использовать #skip_confirmation_notification, например:

user = User.new(your, args)
user.skip_confirmation_notification!
user.save!

См. документацию

Пропускает отправку письма с подтверждением / подтверждением after_create / after_update. В отличие от #skip_confirmation !, запись еще требуется подтверждение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...