我刚刚将devise_invitable添加到一个已经实施设计的应用程序的应用程序中。
邀请过程本身一切正常(发送电子邮件,新用户可以点击链接并设置密码等)。
问题是邀请者 User
有一个关联的Profile
,当邀请者点击'发送邀请'时会被删除< / strong>按钮。
任何人都知道为什么邀请过程会在邀请者上核对相关对象?我将尝试通过devise_invitable代码来追踪这一点,但是知道是否有人之前遇到过这个问题,或者知道问题可能存在于设计代码的哪个位置会很好。
User
:
has_one :profile, :inverse_of => :user, :dependent => :destroy
Profile
belongs_to :user, :inverse_of => :profile
答案 0 :(得分:0)
此处的错误是因为 - 默认情况下 - devise_invitable的after_invite_path_for
只是调用after_sign_in_path_for
。
但是,它不将当前用户作为resource
传递,这是常规登录的情况。
如果你覆盖after_sign_in_path_for
,假设它只会在真正登录后被调用,就像我一样,这可能会令人困惑。
(在我的特殊情况下:我覆盖的方法所做的是查找resource
的关联配置文件,如果它没有,它将创建一个新的假设用户正在登录第一次。当devise_invitable传递了一个意外的资源时,这个新的配置文件对象将覆盖现有的关联,并且会在旧的配置文件对象上触发:dependent => :destroy
回调.D'哦!)