我的模型:
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 many 似乎双向工作,但是将数据添加到现有对象的数据透视表对我来说并不是很清楚。谢谢您的帮助。
编辑:好的,我得到了 2。
@event.entrants.new(name: "hello") #adds a new Entrant works