假设我有一个定义如下的多对多关系:
在我的用户模型中:
class User < ActiveRecord::Base
attr_accessible :userName (...)
has_and_belongs_to_many :groups
end
在我的小组模型中:
class Group < ActiveRecord::Base
attr_accessible :groupName (...)
has_and_belongs_to_many :users
end
我在更新和创建中添加到我的用户控制器:
@user.group_ids = Group.find(params[:group_ids]) if params[:group_ids]
用户表单包含一个多选列表,用于为每个用户选择组(以及其他实际工作的标准):
<%= select_tag("group_ids[]", options_for_select(Group.find(:all).collect { |gro| [gro.groupName, gro.id] }, @user.groups.collect { |gro| gro.id}), {:multiple=>true, :size=>15}) %>
当我创建或更新用户时,一切看起来都正常,但无论我在选择列表中做出什么选择,它都会向用户添加错误的组(总是 id=1 的组)。我尝试使用has_many_through
并迁移了数据库,但也遇到了问题。
你知道如何完成任务吗?