1
非常相似this的問題,但不完全相同。has_many:通過與現有對象
我有音樂家和儀器型號:
# musician.rb
class Musician < ActiveRecord::Base
attr_accessible :instrument_attributes
has_many :instrument_choices
has_many :instruments, through: instrument_choices
accepts_nested_attributes_for :instruments # with some other stuff
end
# instrument.rb
class Instrument < ActiveRecord::Base
has_many :inverse_instrument_choices, class_name: "InstrumentChoice"
has_many :musicians, through: :inverse_instrument_choices
validates_uniqueness_of :name
# instrument_choice.rb
class InstrumentChoice < ActiveRecord::Base
belongs_to :musician
belongs_to :instrument
validates_uniqueness_of :musician_id, scope: :instrument_id
我有可能儀器的靜態列表,用戶從該列表中選擇的形式在新的選擇和編輯的意見。假設所有這些儀器都有現有記錄。我如何處理添加音樂家和樂器之間的新關聯?
謝謝!
感謝您的快速回復,菲利普。問題是我在'create'動作中做了'@musician = Musician.new(params ['musicians'])',所以我認爲它會自動爲我創建關聯,這不是我想要的,因爲將嘗試創建新的樂器記錄。我應該只是逐塊加載參數,然後按照你的說法建立關聯? – Eric
因此,當您想存儲樂器時音樂家是不存在的?另外,因爲我看到'params''musicians'',你是否試圖同時創建多個音樂家? – fphilipe
抱歉,意味着音樂家。我需要考慮兩種情況:創建音樂家簡介並添加樂器,編輯音樂家簡介,以便我可以(或不可以)添加/刪除樂器關聯。 – Eric