次のように定義された多対多の関係があるとします。
私のユーザーモデルでは:
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
移行しましたが、問題もありました。
割り当てを実現する方法を知っていますか?