I'm using a habtm association for the first time and I'm having some trouble when inserting several rows. The id of the join table seems to be set to an already existing id causing the insert to fail.
class ClassA < ActiveRecord::Base has_and_belongs_to_many :bs, :class_name => "ClassB", :join_table => :abs
end
class ClassB < ActiveRecord::Base belongs_to :class_a end
My join table migration:
def self.up create_table :abs do |t| t.integer :class_a_id, :null => false t.integer :class_b_id, :null => false end
add_index :abs, [:class_a_id, :class_b_id], :unique => true end
Then finally in the controller:
@a.bs = ClassB.find params[:bs] @a.save
Now, this works the first time, but the second time I get this back:
Mysql::Error: #23000Duplicate entry '1' for key 1: INSERT INTO `abs` (`class_a_id`, `id`, `class_b_id`) VALUES (7, 1, 1)
Now, I wonder - why is the id included in the query with a value that is already used? I'm sure it's just something I'm doing wrong, but I'm having a hard time figuring out what. I looked at the :insert_sql option to habtm too, but don't know how to include the ids dynamically?