ActiveRecord setting IDs on auto increment fields

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,
) TYPE=InnoDB;

the code in question is almost directly ripped from this tutorial:

def update

if @params[:risk_id]
@industry.risks = Risk.find(@params[:risk_id]) if @params


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!


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 :^)

ActiveRecord is creating it’s own IDs on an auto increment field in
my link table- is this normal? I can’t wrap my mind around why / what
to do about it…

shoot, i think i’ve found my problem:

i’m too newby to help here… :^(
anyone have any other thoughts? i’ll try in the meantime without an
id field in the join table


This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs