2011-01-29 1 views
3

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

User.create! :blah => "whatever" 

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

ответ

2

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

user.confirmed_at = Time.now 
user.save! 
user.confirmed_at = nil 
user.send(:generate_confirmation_token) 
user.save! 
0

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

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

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

6

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

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

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

+0

Только то, что я искал. Похоже, что «способ изобрести заставил вас сделать это» вместо «быстрого и грязного» одобренного ответа. Спасибо, сэр. – dooleyo

+0

Это решение также подтверждает пользователя, которого, возможно, нет, чего вы хотите. – MarkoHiel

Смежные вопросы