我们的Rails应用程序在我们的类上使用一个自引用关系来跟踪以下内容。这样可以找到has_many

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

我被特别要求创建一个User。我似乎无法生成正确的查询来获得相反的结果。我最接近的是一个实例方法
def followers
  User.includes(:followings).where followings: { followed_user_id: id }
end

但我被告知要通过followed_users而不是实例方法来查询逆。
这可能吗?

最佳答案

我在阅读了this帖子后解决了这个问题:

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

我有一个误解,我首先要定义连接关系,然后(实际上)跟随这个连接到User类。我错误地认为我可以在一个语句中直接描述连接和直通。

关于mysql - 如何在Rails中查询自引用“has_many:through”关系的逆函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42181937/

10-13 08:57