【问题标题】:send bcc using rails devise invitable使用 rails devise invitable 发送密件抄送
【发布时间】:2014-02-18 20:46:34
【问题描述】:

我正在使用:

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

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

【问题讨论】:

    标签: ruby-on-rails devise


    【解决方案1】:

    我设法通过重写 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) 中的实现,但您可以通过查看source code in Github 轻松找到适合您的实现。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-01
      • 2011-09-28
      • 2015-12-19
      • 2013-06-08
      • 2012-03-20
      相关资源
      最近更新 更多