如何为两个不同的Devise模型使用两组不同的邮件模板?

时间:2011-11-21 19:28:11

标签: ruby-on-rails devise actionmailer resque

我使用Resque发送Devise电子邮件。为此,我设置:

devise.rb

config.mailer = "Mailers::Devise::DeviseMailer"

但我有2个设计模型 - 用户和客户端。我想为每个发送不同的设计邮件模板。

devise.rb说"前四个配置值也可以在你的模型中直接设置。"和config.mailer是前四个中的一个,但是我不知道怎么做直接在模型中设置它。

我该怎么做?

2 个答案:

答案 0 :(得分:8)

我创建了一个示例应用程序来执行此操作:

https://github.com/rodrigoflores/multiple-mailer

请注意https://github.com/rodrigoflores/multiple-mailer/blob/master/app/models/user.rb#L6以及app / models / admin.rb上的类似行,您可以在其中为每个设计模型选择邮件。您还必须阅读Devise邮件程序(https://github.com/plataformatec/devise/blob/master/app/mailers/devise/mailer.rb)源代码以实现相同的方法。最后,为邮件编写您的观点。

答案 1 :(得分:4)

诀窍是设置:

devise.rb

config.scoped_views = true

有关详情,请参阅https://github.com/plataformatec/devise

的设计文档中的“配置视图”
  

如果您的应用程序中有多个角色(例如“用户”和   “管理员”),您会注意到Devise对所有人使用相同的视图   角色。幸运的是,Devise提供了一种自定义视图的简便方法。所有   你需要做的是在里面设置“config.scoped_views = true”   “配置/初始化/ devise.rb”。

     

执行此操作后,您将能够根据角色获得视图   “users / sessions / new”和“admins / sessions / new”。如果没有找到视图   在范围内,Devise将使用默认视图   “色器件/会话/新”。您也可以使用生成器生成   范围观点: