私のモデル:
class Entrant < ActiveRecord::Base
has_many :events, :through => :event_maps
has_many :event_maps, :foreign_key => "entrant_id"
accepts_nested_attributes_for :events, :reject_if => :all_blank
end
class Event < ActiveRecord::Base
has_many :event_maps, :foreign_key => "event_id"
has_many :entrants, :through => :event_maps
accepts_nested_attributes_for :entrants, :reject_if => :all_blank
end
class EventMap < ActiveRecord::Base
belongs_to :event, foreign_key: "event_id"
belongs_to :entrant, foreign_key: "entrant_id"
end
私のマッピングは、コンソールで次のように実行できる限り、正しいです。
新しいイベントを作成し、新しい参加者を追加します。
@event = Event.new(name: 'my event');
@event.save
@event.entrants_attributes = [{name: 'Jack'}]
@event.save
新しい参加者を作成し、新しいイベントを追加します。
@entrant = Entrant.new(name: 'Peter')
@entrant.save
@entrant.events_attributes = [{name: 'Great concert'}]
@entrant.save
に、またはにどのようにマップPeter
しますか?
意味my event
Jack
Great concert
- 既存の参加者を既存のイベントに登録したいのですが、
- 新しい参加者を既存のイベントに追加する、またはその逆。
私が言ったように、多数 2 多数は両方の方法で機能するようですが、既存のオブジェクトのピボット テーブルにデータを追加することは、私にはあまり明確ではありません。助けてくれてありがとう。
編集:わかりました2を取得しました。
@event.entrants.new(name: "hello") #adds a new Entrant works