我想按total_content_length
对论坛的用户进行排序。要在论坛中获得最高n
作者:
User.order("total_content_length DESC").limit(n)
现在,问题是当有两个(或更多)用户具有相同的total_content_length
时。
在这种情况下,我想优先考虑最近创建帖子的用户。
Post
有publisher_id
字段(用户id
)。
你会怎么做?
答案 0 :(得分:1)
尝试使用2个订单声明:
User.order("total_content_length DESC").order("created_at DESC").limit(n)
试试这个:
class User < ActiveRecord::Base
scope :your_scope_name, joins(:posts).order("posts.created_at DESC")
end
然后您可以将此scope
与其他语句结合使用
答案 1 :(得分:0)
在您的用户模型中定义一个方法,该方法提供最新帖子的日期(假设您有帖子关联):
def date_of_last_post
posts.order('created_at DESC').limit(1)[0].created_at
end
然后你可以得到结果:
top_posters = User.order("total_content_length DESC").limit(n)
# write a conditional sorting algo that swaps values only
# if a.total_content_length == b.total_content_length based on 'date_of_last_post'