Как я могу остановить Devise от доставки почты при создании пользователя? - PullRequest
3 голосов
/ 30 января 2011

У меня есть собственный контроллер, который создает пользователей, например:

User.create! :blah => "whatever"

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

Ответы [ 3 ]

6 голосов
/ 08 мая 2013

Вы также можете использовать new вместо create и звонить skip_confirmation до save:

user = User.new :blah => "whatever"
user.skip_confirmation!
user.save

Метод skip_confirmation устанавливает дату confirmed_at, которая предотвращает отправку письма-подтверждения.

2 голосов
/ 31 января 2011

Мне нужно было сгенерировать токен, поэтому мой код выглядел так.Это быстрое и грязное решение, которое можно значительно улучшить, но, по крайней мере, оно показывает основы того, как это сделать:

user.confirmed_at = Time.now
user.save!
user.confirmed_at = nil
user.send(:generate_confirmation_token)
user.save!
0 голосов
/ 30 января 2011

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

Мне неизвестен простой способ отключить это письмо, но вы можете изменить текст отправляемого письма. Все, что вам нужно сделать, это создать пользовательскую версию файла views / devise / mailer / translation_instructions.html.erb , чтобы он содержал необходимую вам информацию.

Другим подходом было бы перезаписать почтовик по умолчанию , который использует devise, и установить свой собственный в initializers / devise.rb, установив config.mailer в свой собственный почтовик. Затем в своем почтовом ящике вы можете переписать метод confirmation_instructions(record), чтобы он отправлял ваше новое электронное письмо.

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