Devise-создать учетную запись Пользователя с подтверждением без отправки электронной почты?



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



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


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

532   2  

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

    Ничего не найдено.