如何针对不同用例定制Devise Invitable

时间:2019-01-22 02:46:08

标签: ruby-on-rails-4 devise devise-invitable

我正在尝试按照Devise Invitable here的文档为不同的用户类型(在我的情况下为合作伙伴客户)发送不同的电子邮件。

因此,它说要在您的Devise模型(在我的情况下为User.rb)中添加以下代码。

....
  attr_accessor :invitation_instructions
....
    def self.invite_partner!(attributes={}, invited_by=nil)
      self.invite!(attributes, invited_by) do |invitable|
       invitable.invitation_instructions = :partner_invitation_instructions
      end
    end

    def self.invite_client!(attributes={}, invited_by=nil)
     self.invite!(attributes, invited_by) do |invitable|
       invitable.invitation_instructions = :client_invitation_instructions
     end
    end

然后从我的控制器中,当新用户注册时,我正在呼叫

....
if current_user.is_client?
  user.invite_client!(user, current_user)
else
  user.invite_partner!(user, current_user)
end

当我这样做时,我得到的错误是

undefined method 'invite_client!' for #<User:0x007ffbcdfabd08>

这有点混乱,因为该方法是在用户模型中定义的,所以我认为至少是已定义了。

在解决此问题和使此设置正常工作方面的任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

我认为这些是类方法,您应该像<h2>Animated Collapsibles</h2> <p>A Collapsible:</p> <button class="collapsible active">Open Collapsible</button> <div class="content"> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p> </div> <p>Collapsible Set:</p> <button class="collapsible active">Open Section 1</button> <div class="content"> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p> </div> <button class="collapsible active">Open Section 2</button> <div class="content"> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p> </div> <button class="collapsible active">Open Section 3</button> <div class="content"> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p> </div> <button onclick="hide()">Collapse all</button>那样调用它,并在方法中传递参数。

User.invite_client!相同