ActiveRecord无法更新HABTM关系

Kor*_*tor 2 activerecord ruby-on-rails has-and-belongs-to-many

我使用一个简单的模型进行用户授权,使用两个ActiveRecords User,Role User并且Role彼此之间具有HABTM关系.

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

我的问题是,无论是User#new还是User#update_attributes使用提交我的表单更新之间的关系的参数User对象和它的作用.params[:user][:role_ids]包含正确的值.但是@user.roles在之后调用User.new(params[:user])@user.update_attributes(params[:user])返回一个空数组.

手动分配角色@user.roles@user.role_ids工作,但不是内部或"魔术".User#newUser#update_attributes

有任何想法吗?

Ole*_*bin 8

您在User模型中具有attr_accessible或attr_protected调用的可能性很高,从而使role_ids不受大规模分配的影响.

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

attr_accessible :role_ids
Run Code Online (Sandbox Code Playgroud)

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