I have the exact same scheme as described here with a polymorphic compound table: 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
I want to be able to create and update several types of polymorphic associations at once, instead of doing @note.locations << Location.first
or @note.checkpoints << Checkpoint.first
.
Something like @note.create note_joins_params
and @note.update note_joins_params
would be awesome.
So far, I have managed to achieve the creation part by passing an array of attributes @note.note_joins.create
, for example.
note_joins_params = [{"notable_id"=>"9225", "notable_type"=>"Location"}, {"notable_id"=>"9220", "notable_type"=>"Checkpoint"}] @note.note_joins.create note_joins_params
Is there still a Rails-esque way to achieve this, or a valid attribute hash syntax similar to accepts_nested_attributes or something similar?
Also the only way to learn how to update
is to delete all existing entries in the connection table first and then recreate them, i.e.
@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