根据发件人有条件地呈现电子邮件文本

Render email text conditionally based on who sent it

用户可以接受项目,或者管理员用户可以代表他们接受。无论发件人是谁,都会发送一封电子邮件。当管理员触发发送时,我希望电子邮件的内容有所不同。

ApplicationController 中有一个 current_user 方法。当 current_user.admin? 的计算结果为 true 时,我想做点别的事情。

如何从邮件程序的视图模板或 *_mailer.rb 本身访问 current_user

我也愿意使用 controller/action 名称。例如,if controller_name == "Admin"。它会让我们到达那里,但这种方法在邮件程序中也不可用。

只需在创建新递送时将 current_user 传递给邮寄者:

YourMailer.conditional_creation_email(current_user).deliver_now

your_mailer.rb

def conditional_creation_email(sender)
  if sender.admin?
    # do...
    mail(to: '@gmail.com', subject: 'New  Order')
  end
end