Ich benutze Active-Admin, um Liste der Benutzer mit der folgenden Abfrage anzuzeigen.ActiveAdmin: paginate_collection mit Gruppe nach und nach Alias Spaltenname sortieren
SELECT
agent_id,
COUNT(*) filter (where price BETWEEN 1 AND 200000) as stat_1,
from users
group by agent_id
order by stat_1 desc
LIMIT 20 OFFSET 0
Rails Standard:
User
.select('agent_id, COUNT(*) filter (where price BETWEEN 1 AND 200000) as stat_1').page(params[:page]).per(20)
.group(:agent_id)
.page(params[:page]).per(20)
.order('stat_1 desc')
In ActivAdmin
paginated_collection(users) do
table_for collection, sortable: true do
....
....
end
end
Aber paginate_collection wirft Fehler
PG::UndefinedColumn: ERROR: column "stat_1" does not exist
SELECT COUNT(*) AS count_all, agent_id AS agent_id FROM "users"
GROUP BY "users"."agent_id"
ORDER BY stat_1 desc LIMIT 20 OFFSET 0
Wie ich dieses Problem lösen können?
alias Spalte in neuester PostgreSql verwendet werden kann. Problem mit paginated_collection, bei dem nicht die gesamte select-Spalte für die Gesamtzahl der Seiten gezählt wird. Es dauert nur 2 Spalten (COUNT (*) AS count_all und agent_id AS-Agent-ID) so stat_1 Spalte ist in diesem Fall nicht vorhanden. –
@Sonam: Ich denke, Alias-Methode funktioniert gut mit der neuesten Version. –