0

我刚刚将 devise_invitable 添加到一个应用程序中,该应用程序已经有了设计的工作实现。

邀请过程本身一切正常(发送电子邮件,新用户可以单击链接并设置密码等)。

问题是邀请者aUser有一个关联的 ,当邀请者点击“发送邀请”按钮Profile时,它会被删除。

任何人都知道为什么邀请过程会在邀请者上对关联对象进行核对吗?我将尝试通过 devise_invitable 代码跟踪这一点,但最好知道是否有人以前遇到过这个问题,或者知道问题可能出在 devise 的代码中的哪个位置。

User: _

has_one :profile, :inverse_of => :user, :dependent => :destroy

Profile

belongs_to :user, :inverse_of => :profile
4

1 回答 1

0

这里的错误是因为 - 默认情况下 - devise_invitableafter_invite_path_for只是调用after_sign_in_path_for.

但是,它不会当前用户作为 传递resource,这将是常规登录的情况。

如果你重写after_sign_in_path_for假设它只会在真正登录后被调用,就像我所做的那样,这可能会令人困惑。

(在我的特殊情况下:我的重写方法所做的是查找resource' 的关联配置文件,如果它没有,假设用户第一次登录,它将创建一个新配置文件。当 devise_invitable 传递一个意外资源,这个新的配置文件对象将覆盖现有的关联,并且:dependent => :destroy将在旧的配置文件对象上触发回调。D'oh!)

于 2012-04-25T16:33:22.040 回答