Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 跟踪者id的rails范围(通过源有多个)_Ruby On Rails_Postgresql - Fatal编程技术网

Ruby on rails 跟踪者id的rails范围(通过源有多个)

Ruby on rails 跟踪者id的rails范围(通过源有多个),ruby-on-rails,postgresql,Ruby On Rails,Postgresql,Heroku控制台 u = User.find(1) u.followers.count (1.4ms)从“用户”的“用户”内部连接“关系”中选择计数(*),“id”=“关系”。“关注者id”中的“关系”。“关注者id”=$1[[“关注者id”,1]] 关系.rb class Relationship < ActiveRecord::Base belongs_to :follower, class_name: "User" belongs_to :followed, class

Heroku控制台

u = User.find(1)
u.followers.count 
(1.4ms)从“用户”的“用户”内部连接“关系”中选择计数(*),“id”=“关系”。“关注者id”中的“关系”。“关注者id”=$1[[“关注者id”,1]]

关系.rb

class Relationship < ActiveRecord::Base
  belongs_to :follower, class_name: "User"
  belongs_to :followed, class_name: "User"
  validates :follower_id, presence: true
  validates :followed_id, presence: true
end
has_many :active_relationships, class_name:  "Relationship",
                                foreign_key: "follower_id",
                                dependent:   :destroy
has_many :passive_relationships, class_name:  "Relationship",
                                foreign_key: "followed_id",
                                dependent:   :destroy
has_many :following, through: :active_relationships, source: :followed
has_many :followers, through: :passive_relationships, source: :follower

我想创建一个作用域,该作用域将按用户的关注者对用户进行排序。count

使用以下查询,它将根据用户的关注者向您提供升序。如果您想让
User
拥有最多追随者,可以将
asc
替换为
desc

User.joins(:followers).group('users.id').order('count(*) asc')
更新:

如果要在用户模型中使用范围

scope :by_followers_count, -> { joins(:followers).group('users.id').order('count(*) asc') }

使用下面的查询,它将根据用户的追随者向您提供升序。如果您想让
User
拥有最多追随者,可以将
asc
替换为
desc

User.joins(:followers).group('users.id').order('count(*) asc')
更新:

如果要在用户模型中使用范围

scope :by_followers_count, -> { joins(:followers).group('users.id').order('count(*) asc') }

但是,如何在此基础上创建一个作用域以放入user.rb?我的理解是,最好避免将此类内容放入控制器中,并将其放入模型中。@TimmyVonHeiss我已更新了答案,并将其移动到用户模型中的作用域中。但如何在此基础上创建一个作用域以放入User.rb?我的理解是,最好避免将这样的内容放入控制器,它应该放入模型中。@TimmyVonHeiss我已经更新了答案,并进入了用户模型中的范围。