我的Ruby on Rails应用程序中有以下模型,我使用的是Postgres数据库:
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 :(得分:0)
我对你的案例的建议你可以只分组sales_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)
答案 1 :(得分:0)
尝试总结价格的registering a database view。 documentation on custom sorting仍应适用。这些提示和技巧的链接可以在wiki上找到。