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

时间:2017-06-29 15:42:15

标签: mysql ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

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

1 个答案:

答案 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