[英]Rails SQL query for mutual friends
我的User
模型如下所示:
has_many :relationships, foreign_key: "follower_id", dependent: :destroy
has_many :followed_users, through: :relationships, source: :followed
has_many :reverse_relationships, foreign_key: "followed_id",
class_name: "Relationship",
dependent: :destroy
has_many :followers, through: :reverse_relationships, source: :follower
我想要的是原始SQL查询,以获取给定用户遵循并随后返回的用户。
目前,我只获得了我关注的用户的ID:
followed_user_ids = "SELECT followed_id FROM relationships
WHERE follower_id = #{user.id}"
我有一个返回共同朋友的rails方法,但是我想要等效的SQL:
def mutual_friends
# interesect both arrays to find similar elements
self.followed_users & self.followers
end
这样的事情应该工作
SELECT followed_id
FROM relationships
WHERE follower_id = #{user.id} AND followed_id IN (
SELECT follower_id FROM relationships WHERE followed_id = #{user.id}
)
请像这样使用它,让我知道它是否适合您。
has_many :company_friendships, autosave: true
has_many :company_friends, through: :company_friendships, autosave: true
has_many :inverse_company_friendships, class_name: "CompanyFriendship", foreign_key: "company_friend_id", autosave: true
has_many :inverse_company_friends, through: :inverse_company_friendships, source: :company, autosave: true
def mutual_company_friends
Company.where(id: (company_friends | inverse_company_friends).map(&:id))
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.