根据 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
我有 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