2

我在用着:

gem 'rails', '3.2.2' 
gem 'devise',           '~> 2.0.0'
gem 'devise_invitable', '~> 1.0.0'

devise_invitable 插件允许我的成员邀请其他成员。

我的控制器看起来像使用类方法邀请!:

def create
   #params[resource_name] ==> {"email" => "abc@abc.com"}
   # current_inviter ==> same as current_artist
   # resource_class Artist

   self.resource = resource_class.invite!(params[resource_name], current_inviter)
   .....

每次通过电子邮件密件抄送发出邀请时,我都希望收到通知,但我不知道在哪里注入。我尝试将密件抄送添加到传递给邀请的哈希中!方法,但这似乎只是设置模型的属性,所以我得到错误:

b = Artist.invite!({:email => 'mytest@fjds.com', :name=>'test name', :bcc =>    'test_confirm@gmail.com'},t)

 ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes: bcc

我怎样才能得到每个发出的邀请的秘密副本?

4

1 回答 1

0

我设法通过重写 DeviseInvitable::Mailer#invitation_instructions 来获得这个功能。这是在生成邀请后负责发送邮件的方法。这可能不是最干净的方法,但它确实有效。

在 config/initializers/devise_invitable.rb 中:

module DeviseInvitable
  module Mailer
    def invitation_instructions(record, token, opts = {})
      @token = token
      devise_mail record, :invitation_instructions, opts.merge(bcc: 'recipient@domain.com')
    end
  end
end

这引用了我当前版本devise_invitable(1.3.0) 中的实现,但您可以通过查看Github 中的源代码轻松找到适合您的实现。

请记住重新启动您的应用程序以使更改生效。更进一步并在配置中设置收件人地址并优雅降级可能也是一个好主意nil

于 2014-02-18T12:46:34.290 回答