I have a many-to-many relationship defined by a join model:
class Product < ActiveRecord::Base
has_many :bundlings
has_many :bundles, :through => :bundlings
…
end
class Bundling < ActiveRecord::Base
belongs_to :product
belongs_to :bundle
…
end
class Bundle < ActiveRecord::Base
has_many :bundlings
has_many :products, :through => :bundlings
…
end
Additionally, Bundle validates that it contains at least two products.
Then I tried to create a new Bundle like this:
fixtures :products
…
bundle = Bundle.new(…) # can’t save bundle yet since
# I haven't yet added two products
bundle.products << products(:product_one)
bundle.products << products(:product_two)
bundle.save!
The “<<” operation raises an**ActiveRecord:: HasManyThroughCantAssociateNewRecords exception, saying that both bundle and the product need to have an ID to use “<<” on a through association. However, in order to obtain an ID, I need to save bundle, but bundle cannot be saved (i.e. pass validation) unless I have added two products to it through “<<” – Catch 22.
Any thoughts?
Thanks,
Eric