如何为不同的用例定制 Devise Invitable

How to customize Devise Invitable for different use cases

我正在尝试按照 Devise Invitable here 的文档为不同的用户类型发送不同的电子邮件,在我的例子中是 partnersclients .

所以它说要在你的 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>

这有点令人困惑,因为该方法是在用户模型中定义的,所以我认为至少它是已定义的。

如果能帮助解决这个问题并让这个设置正常工作,我们将不胜感激!

我认为这些是 class 方法,你应该像 User.invite_client! 那样调用它,并在方法中传递你的参数。

invite_partner!

也一样