2017-06-29 106 views
-1

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

东西给我由Max下令没有追随者

我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_followable宝石 ,并在一些地方我已经定义我自己下面的模型是这样的

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

你能告诉我们协会的模式? – Pavan

+0

更新协会 –

+0

整个模型是非常大的..没用这个Q,只会搞乱了可读性..所以我显示协会只 –

回答

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 
+1

好吧,我不得不编辑你的查询一点点..但使用SQL的想法工作...非常感谢 –