警告!!!最初の反復解法 - それはより簡単になる可能性があります。
マッピングを達成するには、多形関係が必要な場合があります。
Event
has_many :invitations
has_many :user_invitations, :class_name => "Invitation", :conditions => "inviteable_type = 'User'"
has_many :group_invitations, :class_name => "Invitation", :conditions => "inviteable_type = 'Group'"
Invitation
belongs_to :inviteable, :polymorphic => true
#Invitations table would have inviteable_id, inviteable_type columns
User
has_many :invitations, :as => :inviteable
Group
has_many :invitations, :as => :inviteable
今、あなたは、あなたのビューで `Event.first.inviteables(これはユーザーとグループのコレクションを返します)
を持つことができ、異なるあなたの2つのコレクションのためのオプションに名前を付け、例:
あなたのイベントモデルで
<select name='event[event_inviteables]' ...>
<option value='group[][1]'>Group 1</option>
..
<option value='user[][1]'>User 1</option>
は、ユーザーがであるものを決定するためにevent_inviteables=
方法を持っている必要がありますし、どれがグループであり、従って
をinviteableコレクションを更新します3210
Event
def event_inviteables=(*args)
user_ids = #some magic to extract user_ids from args
group_ids = #some magic to extract group_ids from args
self.user_invitation_ids = user_ids
self.group_invitation_ids = group_ids
end
詳細な回答をいただきありがとうございます。私は最初の部分(多型関連)を得て、Event.first.invitablesを呼び出すことができます。しかし、2番目の部分、つまりチェックボックスタグを実装することはできません。 (check_boxの選択ボックスを混乱させて申し訳ありません)。あなたは非常によく知っているので、check_box_tagのために、ちょうどidの代わりに配列[id、class_name]を渡す必要があります:invitable => {{id => "1"、name = "" User "}、{id = 4 "、name =>" Group "}}を選択します。チェックボックスのタグのためにソリューションをどのように習熟すればよいですか?再度、感謝します。 – AdamNYC
チェックボックスタグは名前と値だけを取る<%= check_box_tag 'イベント[event_inviteables] [user] []'、user.id%><%= check_box_tag 'イベント[event_inviteables] [group] []'、group.id %> '(もちろん、イベント編集ページでチェックするかどうかをテストする必要もあります)。 – tamersalama