rails sort_by method in descending和offset limit

时间:2017-08-13 10:12:30

标签: ruby-on-rails ruby rails-activerecord ruby-on-rails-5

我只是想知道在我调用sort_by total_like方法之后,通过降序在我的自定义方法轨道中进行偏移限制和排序。 这是我在模型中的自定义方法

 class Post < ApplicationRecord
 def total_like
    self.likeposts.count
 end
 ... more code ...

这是脚本,当我试图通过降序

调用total_like排序的帖子时
    if POST==@current_entity
            @entities=[]
            @entity.where(paramshash).sort_by(&:total_like).reverse!.each.with_index do |entity, index|
              if index >= params[:offset].to_i && index <= params[:offset].to_i + params[:limit].to_i
                @entities << entity
              end
            end
    render json: @entities

任何人都可以简单地完成它并且不需要调用我Post表中的所有记录:(

1 个答案:

答案 0 :(得分:3)

我觉得这样的事情可能有用:

Post
  .joins(:likeposts)
  .group('posts.id')
  .order('COUNT(likeposts.id) DESC')
  .offset(params[:offset])
  .limit(params[:limit])