Добавление пользовательских метаданных для определенных подсчетов с помощью API Rails REST
Для конечной точки индекса time_trackings мне нужно вернуть конкретную информацию о метаданных, помимо 'page-items', 'total-pages' и т. Д., Предоставленных pagy (жемчужина разбивки на страницы). Я хочу иметь возможность возвращать total_confirmed, total_running и т. Д. Я использовал ransack для подсчета, и это выглядит так
def set_time_trackings_metadata(records)
total_unconfirmed = records.ransack("confirmed_true" => 0).result.count.to_s
total_confirmed = records.ransack("confirmed_true" => 1).result.count.to_s
total_running = records.ransack("running" => 1).result.count.to_s
@time_tracking_metadata = { total_unconfirmed: total_unconfirmed, total_confirmed: total_confirmed,
total_running: total_running }
end
Это показывает правильные метаданные. Вот пример ответа
{
"data": [
{
"id": "15",
"type": "time_tracking",
"attributes": {
"starts_at": "2021-02-18T05:16:00+01:00",
"ends_at": "2021-02-18T14:00:00+01:00",
"confirmed": false,
...
"meta": {
"current_page": "1",
"page_items": "20",
"total_pages": "1",
"total_count": "4",
"total_unconfirmed": "4",
"total_confirmed": "0",
"total_running": "3"
}
}
Теперь проблема в том, что это решение совсем не идеально, особенно когда индекс содержит сотни или тысячи записей, что является обычным явлением для варианта использования, которым я занимаюсь. Есть ли способ лучше рассчитать эти параметры?