代码之家  ›  专栏  ›  技术社区  ›  Koraktor

ActiveRecord无法更新habtm关系

  •  2
  • Koraktor  · 技术社区  · 15 年前

    我用一个简单的模型来授权用户,有两个活动记录 User Role 用户 角色 彼此之间有着良好的关系。

    我试图创建一个用户界面,通过简单的复选框为用户分配角色-就像 Railscasts Episode #17 .

    我的问题是两者都不是 User#new 也不 User#update_attributes 使用我的表单提交的参数更新 用户 对象及其角色。 params[:user][:role_ids] 包含正确的值。但呼唤 @user.roles 刚好在…之后 User.new(params[:user]) @user.update_attributes(params[:user]) 返回空数组。

    手动分配角色 用户角色 @user.role_ids 有效,但不是 “魔术” 里面 用户新 用户更新属性 .

    有什么想法吗?

    1 回复  |  直到 15 年前
        1
  •  8
  •   Oleg Shaldybin    15 年前

    在你的用户模型中,很可能你有ATTR_可访问或ATTR_保护的调用,从而使角色不受大规模分配的影响。

    如果您真的想通过批量分配运算符更新角色,只需添加

    attr_accessible :role_ids
    

    你的模型。不过,我建议你阅读 http://railspikes.com/2008/9/22/is-your-rails-application-safe-from-mass-assignment 首先,要知道质量分配的所有潜在问题。