0

对于代表朋友的用户模型,我有一个标准的自引用关系。这部分工作正常,但我在连接表中有一个额外的列,表示该关系的来源。

友谊模型

# Relationships
belongs_to :user
belongs_to :friend, :class_name => "User"
has_one :source

用户模型

has_many :friendships
has_many :friends, :class_name => "User", :through => :friendships

我知道我可以对用户的朋友进行 where 过滤

 user.friends.where([some conditions])

我的问题是,如何获取由 Friendship 中的 :source 关系过滤的用户对象“朋友”列表?

4

1 回答 1

0

刚刚想通了。以防有人好奇。

用户模型

 has_many :friendships
 has_many :friends, :class_name => "User", :through => :friendships do 
    def bySource(sourceId)
       where("friendships.source_id = ?", sourceId)
    end
 end

用法

 users.friends.bySource(1)
于 2013-03-26T17:54:53.877 回答