Christian Johansen
2008-Oct-14 22:26 UTC
Has and belongs to many, join table id included in query
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?
--
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Frederick Cheung
2008-Oct-14 22:47 UTC
Re: Has and belongs to many, join table id included in query
On Oct 14, 11:26 pm, Christian Johansen <rails-mailing-l...@andreas- s.net> wrote:> 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. >habtm join tables should not have an id column (use :id => false as an option to create_table) Fred> 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? > -- > Posted viahttp://www.ruby-forum.com/.--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Bill Kocik
2008-Oct-14 23:52 UTC
Re: Has and belongs to many, join table id included in query
Not to pimp my blog or anything, but I wrote about this exact issue here: http://bkocik.net/2007/07/26/habtm-and-the-id-field/ That should help you understand what''s going on (in a very long-winded manner). :) On Oct 14, 6:26 pm, Christian Johansen <rails-mailing-l...@andreas- s.net> wrote:> 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? > -- > Posted viahttp://www.ruby-forum.com/.--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Christian Johansen
2008-Oct-15 09:15 UTC
Re: Has and belongs to many, join table id included in query
Bill Kocik wrote:> Not to pimp my blog or anything, but I wrote about this exact issue > here: http://bkocik.net/2007/07/26/habtm-and-the-id-field/ > > That should help you understand what''s going on (in a very long-winded > manner). :) > > On Oct 14, 6:26�pm, Christian Johansen <rails-mailing-l...@andreas-Ah, great stuff, thanks! -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---