【问题标题】:ActiveRecord fails to update HABTM relationActiveRecord 无法更新 HABTM 关系
【发布时间】:2009-04-16 11:47:45
【问题描述】:

我正在使用带有两个 ActiveRecord User 和 Role 的简单用户授权模型 User 和 Role 彼此之间存在 HABTM 关系。

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

我的问题是User#new和User#update_attributes都没有使用我的表单提交的参数来更新User对象与其角色之间的关系。 params[:user][:role_ids] 包含正确的值。但是在User.new(params[:user]) 或@user.update_attributes(params[:user]) 之后调用@user.roles 会返回一个空数组。

使用@user.roles 或@user.role_ids 手动分配角色有效,但User#new 或User#update_attributes 中的“魔法” 无效。

有什么想法吗?

【问题讨论】:

  • 你能发布你的控制器并查看代码吗?

标签: ruby-on-rails activerecord has-and-belongs-to-many


【解决方案1】:

您的用户模型中有 attr_accessible 或 attr_protected 调用的可能性很高,从而使 role_ids 免受大规模分配。

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

attr_accessible :role_ids

到您的模型。但是,我建议您先阅读http://railspikes.com/2008/9/22/is-your-rails-application-safe-from-mass-assignment,以了解批量分配的所有潜在问题。

【讨论】:

  • 非常感谢。昨天刚读到,但在创建我的模型时错过了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多