[Rails] ActiveRecord setting IDs on auto increment fields

Mr.Jay Ellis Wiggins
2006-01-05T17:15:17Z

Hi All, I''ve tried to do my searches, but can''t find reference
to
this anywhere - My question is about ActiveRecord inserts and IDs. I
have a join table that both the models of the source tables join with
"has_and_belongs_to_many". It seems like ActiveRecord is setting the
"id" field for the join table- This should be an auto_increment and
ActiveRecord shouldn''t need to force a value, no?

the table looks like this:

CREATE TABLE `industries_risks` (
   `id` int(10) unsigned NOT NULL auto_increment,
   `industry_id` int(10) unsigned default NULL,
   `risk_id` int(10) unsigned default NULL,
   `created_on` datetime default NULL,
   `updated_on` datetime default NULL,
   PRIMARY KEY  (`id`)
) TYPE=InnoDB;

the code in question is almost directly ripped from this tutorial:
http://jrhicks.net/Projects/rails/has_many_and_belongs_to_many.pdf

def update
...
     if @params[:risk_id]
       @industry.risks = Risk.find(@params[:risk_id]) if @params
[:risk_id]
     else
       @industry.risks.clear
     end
...
end

and the error looks like this- NOTICE the `id` field getting set to 3...

Mysql::Error: Duplicate entry ''3'' for key 1:
   INSERT INTO industries_risks
   (`created_on`, `updated_on`, `risk_id`, `id`, `industry_id`)
   VALUES (''2006-01-04 10:33:19'', ''2006-01-04
10:33:19'', 1, 3, 3)

Thanks for any light anyone can shed on this!

Jay.


#### NEWBY DISCLAIMER: I''ve been dev''ing web apps for a really
long
time, but just now getting ''round to testing out Rails (and Ruby) -
thanks for your patience :^)