繁体   English   中英

如何在Rails中查询自引用“ has_many:through”关系的逆函数?

[英]How to query the inverse of a self-referential “has_many :through” relationship in Rails?

我们的Rails应用程序在User类上使用自引用has_many关系来跟踪关注者。 这可以找到followed_users

class User < ApplicationRecord
  has_many :followings
  has_many :followed_users, through: :followings
end

class Following < ApplicationRecord
  belongs_to :user
  belongs_to :followed_user, class_name: 'User'
end

特别要求我创建一个has_many :follower_users 我似乎无法生成正确的查询以求逆。 我最接近的是一个有效的实例方法

def followers
  User.includes(:followings).where followings: { followed_user_id: id }
end

但是我被告知要通过has_many而不是实例方法来查询逆函数。

这可能吗?

阅读这篇文章后,我解决了它:

has_many :followers, foreign_key: :followed_user_id, class_name: 'Following'
has_many :follower_users, through: :followers, source: :user

我对如何首先定义联接关系有一个误解,然后(实际上)将联接遵循到User类。 我的错误假设是,我可以直接在单个语句中描述连接并通过。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM