我正在使用active-admin以顯示具有以下查詢的用戶列表。Activeadmin:paginate_collection與group by和按列別名排序
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的標準:
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')
在ActivAdmin
paginated_collection(users) do
table_for collection, sortable: true do
....
....
end
end
但paginate_collection拋出錯誤
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
我怎樣才能解決這個問題?
別名列可以在最新的PostgreSQL使用。問題與paginated_collection沒有采取所有選擇列total_pages計數。 它只需要2列(COUNT(*)AS count_all和agent_id AS agent_id),因此stat_1列在該情況下不存在。 –
@Sonam:我認爲別名方法可以在最新版本下正常工作。 –