Devise-создать учетную запись Пользователя с подтверждением без отправки электронной почты?
я интегрировал devise с facebook. Теперь, когда я создаю учетную запись пользователя после того, как пользователь вошел в свою учетную запись facebook,
user = User.create(:email => data["email"],
:password => Devise.friendly_token[0,20])
user.confirmed_at = DateTime.now
user.save!
несмотря на то, что учетная запись была подтверждена, подтверждение по электронной почте по-прежнему срабатывает. Есть идеи, как я могу отключить электронную почту?
2 ответов:
подтверждение обратного вызова происходит после создания, так что это происходит на линии 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для создания записи пользователя.
Если вы просто хотите, чтобы предотвратить отправку электронной почты, вы можете использовать
#skip_confirmation_notification, например:user = User.new(your, args) user.skip_confirmation_notification! user.save!посмотреть документация
пропускает отправку уведомления о подтверждении/подтверждении по электронной почте after_create/after_update. В отличие от #skip_confirmation!, запись еще требуется подтверждение.
Comments