2017-07-26 40 views
2

我在我的Ruby on Rails应用程序下面的模型中,我使用Postgres数据库:ActiveAdmin排序

class Sale < ApplicationRecord 
    has_many :line_items 
end 

class LineItem < ApplicationRecord 
    belongs_to :sale 
end 

现在有两件事情我想实现:

首先,我想在ActiveAdmin for Sales中创建一个索引页,这样我可以为每笔销售显示订单项价格的总和。

我已经尝试过,这并不能很好地工作(这是很慢):

ActiveAdmin.register Sale do 
    actions :index 
    remove_filter :line_items 

    index do 
    column :created_at 
    column :price do |sale| 
     sale.line_items.sum(:price) 
    end 
    end 
end 

其次,我想使此列排序 - 这将是可能的吗?

回答

0

我对你的情况上面,你可以只基于组sale_id再总结的价格和排序下面的方法,反会得到你降序

LineItem.group(:sale_id).sum(:price).sort_by{|k, v| v}.reverse 

,如果你需要大概十大你建议可先用(10)

LineItem.group(:sale_id).sum(:price).sort_by{|k, v| v}.reverse.first(10)