Xiahong Gao wrote: > Hi everyone, > > I ran into a serious problem when I was trying to do something similar > to twitter follow mechanism. The thing is like this: > > First, I have a self-referential table, named "users" > create_table :users do |t| > t.column :name, :string > t.column :user_name, :string > t.column :password, :string > t.column :email, :string > end > > I also have a HABTM join table, named "follow_relations" > create_table :follow_realtions do |t| > t.column :a_id, :integer # a_id follows b_id > t.column :b_id, :integer > end > > My HABTM join is defined as follows > has_and_belongs_to_many :followers, > :class_name => > "User", > :join_table => > "follow_relations", > :foreign_key => > "b_id", > :association_foreign_key > => "a_id" > > has_and_belongs_to_many :followings, > :class_name => "User", > :join_table => > "follow_relations", > :foreign_key => > "a_id", > :association_foreign_key > => "b_id" [...] > The first << operation executes the following SQL : > INSERT INTO `follow_relations (`id`, `b_id`, `a_id`) VALUES (3, 1, 3) > The second << operation executes the following SQL: > INSERT INTO `follow_relations (`id`, `b_id`, `a_id`) VALUES (3, 2, 3) > Thus, key id is duplicated. It looks like that every time, the value > of column id is copied from column a_id. > What's going on here? How to fix this problem?
If you're using HABTM, the join table (follow_relations) should not have an id column. Remove it and see if that does the trick. > > Thanks in advance, > xiahong Best, -- Marnen Laibow-Koser http://www.marnen.org [email protected] -- 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 [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---

