Задержка и повторная отправка подтверждающего электронного письма от Devise для созданных вручную пользователей - PullRequest
28 голосов
/ 03 декабря 2010

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

Кроме того, проверка Devise требует, чтобы администратор установил пароль для нового пользователя.Я бы предпочел, чтобы вручную созданные пользователи указывали свой пароль при ответе на подтверждение.Прямо сейчас созданные вручную пользователи не будут знать свой пароль, если я тоже не отправлю его им в дополнительном письме.

Ответы [ 7 ]

48 голосов
/ 23 декабря 2013

@user.skip_confirmation! подтверждает пользователя, чтобы пользователь мог войти в систему без использования подтверждения.

Это работает для меня в устройстве 3.5

Остановите устройство для отправки электронного письма с подтверждением при создании пользователя.

@user.skip_confirmation_notification! 

Отправить инструкции по подтверждению позже

@user.send_confirmation_instructions
37 голосов
/ 06 января 2011

Мы делаем это в одном из наших приложений.Вы можете указать Devise NOT автоматически доставлять подтверждение следующим образом:

@user.skip_confirmation!

А затем позже вы можете сделать

Devise::Mailer.confirmation_instructions(@user).deliver

Для Rails 2.x вы сделаете что-то вроде

DeviseMailer.deliver_confirmation_instructions(@user)
11 голосов
/ 21 февраля 2011

Решение не так просто, как ответ @Ryan Heneise.Если вы делаете @user.skip_confirmation!, это подтверждает пользователя, поэтому пользователь может войти без использования подтверждения, поэтому письмо с подтверждением в этом случае бесполезно.Это решение не позволяет пользователю войти в систему без подтверждения: Rails 3 с Devise для аутентификации - Как мне вручную создать пользователя?

10 голосов
/ 14 мая 2013

Теперь есть более простой способ (был добавлен обратно в v2.2.4)

Подтверждаемый модуль Devise теперь включает в себя идеальный skip_confirmation_notification!метод, который позволяет получить более чистое решение:

@user = User.new params[:user]
@user.skip_confirmation_notification! 
@user.save

# ... do stuff, then later...

Devise::Mailer.confirmation_instructions(@user).deliver 
1 голос
/ 07 февраля 2012

Я просто потратил некоторое время на изучение этого, в основном вам просто нужно добавить это и настроить delayed_job .

def send_confirmation_instructions
  generate_confirmation_token! if self.confirmation_token.nil?
  ::Devise.mailer.delay.confirmation_instructions(self)
end

Добавить его в вашу пользовательскую модель как защищенный метод для переопределенияпридумать одно в подтверждаемом .Также обратите внимание, что гем был только что обновлен, чтобы добавить новый метод, который будет переопределен при создании, который отправляет инструкции подтверждения .

0 голосов
/ 20 ноября 2013
0 голосов
/ 03 декабря 2010

Используете ли вы отложенная работа ? Позволяет определить отдельные методы для отложенного запуска.

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