Rails如何重写Devise Invitable的invite!方法为邀请邮件添加附件
解决步骤
你现有的路由配置没有问题,不需要调整,你需要额外重写devise_invitable绑定的邮件发送器来添加附件逻辑,操作如下:
- 第一步:创建自定义邮件发送器
在app/mailers目录下新建custom_devise_mailer.rb文件,内容如下:
class CustomDeviseMailer < Devise::InvitationsMailer def invite_instructions(record, token, opts = {}) # 新增附件逻辑 attachments['terms.pdf'] = File.read(Rails.root.join('你本地terms.pdf的实际存储路径')) # 调用父类方法保留原有全部邮件发送逻辑 super end end
- 第二步:修改Devise初始配置绑定自定义邮件器
编辑config/initializers/devise.rb,找到config.mailer配置项,修改为:
config.mailer = 'CustomDeviseMailer'
如果你之前已经为Devise配置过其他自定义邮件器,直接让你的现有邮件器继承Devise::InvitationsMailer,再添加上面的invite_instructions方法即可。
- 第三步:重启Rails服务
配置修改完成后重启服务,之后不管是通过自定义控制器触发邀请,还是手动调用User.invite!方法,发出的邀请邮件都会自动带上你配置的pdf附件,原有邀请邮件的内容、发送逻辑完全不会受影响。
内容的提问来源于stack exchange,提问作者fralps
相关产品推荐
相关产品推荐

