我有2个表,一个用于用户(在我的情况下是事件),后面是用户和事件的连接表, 我想根据他们拥有的最多没有关注者来对事件进行排序 就像我不能使用
获得特定事件的追随者@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
....
端
my amitian.rb
class Amitian < ApplicationRecord
...
act_as_follower
has_many :events, dependent: :destroy
..
end
在某些地方,我使用过act_as_followable gem 在某些地方,我已经定义了我自己的以下模型,就像这样
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
我想要一个适用于这两种情况的ans
答案 0 :(得分:0)
我可能会因为这样的事情而陷入原始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