2017-02-11 18 views
1

我们的Rails应用程序在我们的User类中使用自我指涉has_many关系来跟踪以下内容。这可用来寻找followed_users如何在Rails中查询自引用“has_many:through”关系的逆函数?

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查询倒数,而不是一个实例方法。

这可能吗?

+1

看看本教程是否能够提供一些你想要达到的内容的见解:https://www.railstutorial.org/book/following_users – eggroll

回答

2

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

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

我曾在我第一次不得不来定义连接关系,那么(实际上)一个误区遵循通过加入到User类。这是我错误的假设,我可以直接在一个声明中直接描述连接。

相关问题