2017-07-26 3 views
2

Ich habe folgende Modelle in meine Ruby on Rails-Anwendung, in der ich Postgres-Datenbank bin mit:ActiveAdmin sortieren nach Attribut Summe von zugehörigen Objekte

class Sale < ApplicationRecord 
    has_many :line_items 
end 

class LineItem < ApplicationRecord 
    belongs_to :sale 
end 

Es gibt jetzt zwei Dinge, die ich erreichen will:

Zunächst möchte ich in ActiveAdmin for Sales eine Indexseite erstellen, sodass ich für jeden Verkauf die Summe der Einzelpostenpreise anzeigen kann.

Was ich schon versucht, die nicht sehr gut funktioniert (es ist sehr langsam):

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 

Zweitens, ich möchte diese Spalte sortierbar machen - wäre es möglich?

Antwort

0

für Ihren Fall Mein Vorschlag über Ihnen Gruppe basiert sale_id können und dann den Preis Summe unten und nach Art der Methode, umkehren werden Sie Auftrag

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

wenn Sie wahrscheinlich Sie Top Ten müssen erhalten absteigend (10) erste

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