Ruby on rails 在自引用中返回的源对象有很多,:到

Ruby on rails 在自引用中返回的源对象有很多,:到,ruby-on-rails,has-many-through,belongs-to,self-reference,Ruby On Rails,Has Many Through,Belongs To,Self Reference,以下是我的用户模型: class User < ActiveRecord::Base has_many :friends, :class_name => 'Friendship', :dependent => :destroy end class用户'friends',:dependent=>:destroy 结束 这是我的友谊模型: class Friendship < ActiveRecord::Base belongs_to :user bel

以下是我的用户模型:

class User < ActiveRecord::Base

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

end
class用户'friends',:dependent=>:destroy
结束
这是我的友谊模型:

class Friendship < ActiveRecord::Base

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

  set_table_name :users_users
end
类友谊'User',:foreign\u key=>'friend\u id'
设置\表\名称:用户\用户
结束
嗯。因此,在我的应用程序中,目前还没有一个场景需要友谊对象。例如,当我调用User.find(1).friends时,我不希望返回友谊对象数组。我实际上想要用户对象


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

您确定不希望这样做吗

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
class用户:友谊
结束
类友谊“User”,:foreign\u key=>“friend\u id”
结束

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

Doh!很好的简单解决方案。Thx.你可能想看一看RailsSpace手册的第14章。友谊模型被详细介绍了。以下是源代码: