在自引用has_many,:through中返回源对象

时间:2011-05-05 06:24:58

标签: ruby-on-rails has-many-through belongs-to self-reference

这是我的用户模型:

class User < ActiveRecord::Base

  has_many :friends, :class_name => 'Friendship', :dependent => :destroy

end

这是我的友谊模型:

class Friendship < ActiveRecord::Base

  belongs_to :user
  belongs_to :friend, :class_name => 'User', :foreign_key => 'friend_id'

  set_table_name :users_users
end

确定。所以我的应用程序中实际上没有一个场景,我需要一个友谊对象。例如,当我调用User.find(1).friends时,我不希望返回友谊对象数组。我实际上想要用户对象。

因此,当我调用User.find(1).friends时,如何让它返回User对象?

1 个答案:

答案 0 :(得分:2)

你确定你不想要这个吗?

class User < ActiveRecord::Base
  has_many :friendships
  has_many :friends, :through => :friendships
end

class Friendship < ActiveRecord::Base
  belongs_to :user
  belongs_to :friend, :class_name => "User", :foreign_key => "friend_id"
end

有了这个,User.find(1).friends将返回一组用户,而不是友谊。