Отправка письма текущему пользователю в ActionMailer - Rails 5 - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть приложение Ruby on Rails с несколькими средами (разработка, подготовка, производство).В моей промежуточной среде я хочу иметь возможность переопределить все электронные письма, отправляемые из системы, чтобы перейти к зарегистрированному пользователю current_user. Все, что я прочитал, говорит мне, что я должен продолжать передавать current_user в свою почтовую программу.Тем не менее, это не выглядит логичным для меня, так как есть сотни кодов почтовых программ, которые нужно изменить.

В идеале я бы хотел настроить перехватчик электронной почты, переопределить mail.to и всегда отправлять current_user.Есть ли способ сделать это?Вот что у меня есть в моих инициализаторах:

if Rails.env.staging?
 class OverrideMailRecipient
   def self.delivering_email(mail)
     mail.to = ['development@xxx.com']
   end
 end
 ActionMailer::Base.register_interceptor(OverrideMailRecipient)
end

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

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

Надеюсь, это имеет смысл, любойпомощь приветствуется!:)

Я использую Rails 5.1.4 и Devise для аутентификации.

1 Ответ

0 голосов
/ 10 сентября 2018

Единственный способ, которым я вижу, - добавить текущего пользователя в некоторую глобальную переменную, тогда вы сможете получить к нему доступ из Перехватчика.Вот вариант: https://stackoverflow.com/a/2513456/740394

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

render('sender_info') if Rails.env.staging?
...