根据 Rails 中的最大关注者数量对用户进行排序

Sort users based on their maximum number of followers in Rails

我有 2 个 tables,一个是给用户的(在我的例子中是事件),然后是一个连接 table 到用户和事件, 我想根据他们拥有的最大关注者数量对我的活动进行排序 就像我无法使用

获得特定事件的关注者一样
@event.followers.count

但是我如何执行查询以获取关注者数量最多的事件

像这样 =>

@mainevent = Event.includes(:follow).where(start: Time.now-1.days .. Time.now+1.days).order(' *followers_count* ').first

@mainevent = Event.find_by_sql( 'followers max using sql query' )

任何给我的活动按最大粉丝数排序

我的Event.rb

class Event < ApplicationRecord
 ....
 act_as_followable
belongs_to :club
belongs_to :amitian

 ....

结束

我的amitian.rb

class Amitian < ApplicationRecord
 ...
   act_as_follower
   has_many :events, dependent: :destroy
 ..
end

有些地方我用过act_as_followablegem 在某些地方,我定义了自己的跟随模型,类似这样

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

我想要一个适用于这两种情况的答案

对于这样的事情,我可能会深入研究原始 SQL。我认为您的表名称略有不同。

Event.find_by_sql(<<SQL
  SELECT events.*, COUNT(events.id) AS total_followers
  FROM events
  INNER JOIN followers ON events.follower_id = followers.id
  GROUP BY followers.id
  ORDER BY total_followers DESC;
SQL).first