0
我有两个模型Users
和Roles
。我已经建立了两种模型之间的多对多关系,并且我有一个名为roles_users
的联合表。Ruby on Rails更新连接表记录
我在页面上有一个表格,其中包含用户检查复选框的角色列表,并将其发布到控制器,然后更新roles_users
表。
在我更新方法的那一刻,我这样做是因为我不知道更好的办法:
role_ids = params[:role_ids]
user.roles.clear
role_ids.each do |role|
user.roles << Role.find(role)
end unless role_ids.nil?
所以我清除所有条目出来,然后循环扔从发送的所有角色ID通过邮政形式,我也注意到,如果所有的复选框被选中并且发布的表单不断添加重复记录,那么是否有人可以通过更有效的方式提供一些建议?
干杯,完美的作品,我实际上使用has_and_belongs许多,但阅读:通过方法,并将其移动到那。再次感谢。 – RailsSon 2010-05-19 10:58:06
应该是user.roles = params [:roles_ids] .present? ? Role.find_all_by_id(params [:roles_ids]):[] – user938363 2012-01-25 03:34:08
是的,你是对的。编辑! – tadman 2012-01-25 15:21:55