【问题标题】:Devise_invitable deletes record associated with inviter (User has_one Profile)Devise_invitable 删除与邀请者关联的记录(用户 has_one 个人资料)
【发布时间】:2012-04-24 10:18:07
【问题描述】:

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

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

问题是 inviterUser,有一个关联的 Profile,当邀请者点击 '发送邀请' 按钮时,该 Profile 会被删除.

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

User:

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

Profile

belongs_to :user, :inverse_of => :profile

【问题讨论】:

    标签: devise ruby-on-rails-3.2


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-23
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      相关资源
      最近更新 更多