我有完全相同的模式與多態連接表說明如下:http://aaronvb.com/articles/a-polymorphic-join-table.html一次創建多個多態性記錄軌道
class Location < ActiveRecord::Base
has_many :note_joins, as: :notable
has_many :notes, through: :note_joins
end
class Checkpoint < ActiveRecord::Base
has_many :note_joins, as: :notable
has_many :notes, through: :note_joins
end
class NoteJoin < ActiveRecord::Base
belongs_to :notable, polymorphic: true
belongs_to :note
end
class Note < ActiveRecord::Base
attr_accessible :content, :user_id
belongs_to :notable, polymorphic: true
belongs_to :user
has_many :note_joins
end
我希望能夠創建和更新多種類型的多態關聯的同時,而不必做@note.locations << Location.first
或@note.checkpoints << Checkpoint.first
。
類似@note.create note_joins_params
和@note.update note_joins_params
會很棒。
到目前爲止,我已經能夠實現創建部分的方式是將一組屬性傳遞給@note.note_joins.create
,例如, :
note_joins_params = [{"notable_id"=>"9225", "notable_type"=>"Location"}, {"notable_id"=>"9220", "notable_type"=>"Checkpoint"}]
@note.note_joins.create note_joins_params
是否有更多的Rails式的方式來做到這一點,或適當的屬性哈希語法類似於accepts_nested_attributes或類似的東西?
也只有這樣,我知道怎麼做的update
是先刪除所有的連接表,然後重新創建這些現有的記錄,即
@note.note_joins.destroy_all
new_note_joins_params = [{"notable_id"=>"9225", "notable_type"=>"Location"}, {"notable_id"=>"9220", "notable_type"=>"Checkpoint"}]
@note.note_joins.create new_note_joins_params
Rails的不具備accept_nested_attribute多態協會的大力支持。也許你應該檢查這個線程http://stackoverflow.com/q/3969025/4587148 – Sajan