Hi. I have the following models:
class User < ActiveRecord::Base
has_and_belongs_to_many :rooms
end
class Room < ActiveRecord::Base
has_and_belongs_to_many :users
end
And the test:
require File.dirname(FILE) + ‘/…/test_helper’
class RoomTest < Test::Unit::TestCase
def test_habtm
u1 = User.create
u2 = User.create
r1 = Room.create
r2 = Room.create
r1.users << u1
r1.users << u2
r2.users << u2
end
end
Running “rake test” results in the failure:
- Error:
test_habtm(RoomTest):
ActiveRecord::StatementInvalid: Mysql::Error: Duplicate entry ‘2’ for
key 1: INSERT INTO rooms_users (id
,user_id
,room_id
) VALUES (2,
2, 2)
The problem is, that Rails for some reason sets the “id” of the
rooms_users record to 2, rather than letting MySQL autoincrement
handle it.
Is this an error or am I missing something? Thanks.
Morten