2

我正在使用一个简单的模型进行用户授权,其中包含两个 ActiveRecords UserRole User并且Role彼此之间具有 HABTM 关系。

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

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

@user.roles使用or手动分配角色@user.role_ids,但不是 or 中的“魔法User#newUser#update_attributes

有任何想法吗?

4

1 回答 1

8

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

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

attr_accessible :role_ids

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

于 2009-04-16T12:02:37.717 回答