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"

When I executed:
    gaoxh = User.create(:name => "gaoxh")
    micai = User.create(:name => "micai")
    xiexin = User.create(:name => "xiexin")
    gaoxh.followers << micai
    xiexin.followers << micai

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?

Thanks in advance,
xiahong

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to