Devise_invitable删除与邀请者关联的记录(User has_one Profile)

时间:2012-04-24 10:18:07

标签: devise ruby-on-rails-3.2

我刚刚将devise_invitable添加到一个已经实施设计的应用程序的应用程序中。

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

问题是邀请者 User有一个关联的Profile,当邀请者点击'发送邀请'时会被删除< / strong>按钮。

任何人都知道为什么邀请过程会在邀请者上核对相关对象?我将尝试通过devise_invitable代码来追踪这一点,但是知道是否有人之前遇到过这个问题,或者知道问题可能存在于设计代码的哪个位置会很好。

User

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

Profile

belongs_to :user, :inverse_of => :profile

1 个答案:

答案 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'哦!)