Рейлс 2.3.4
Я искал Google, и не нашел ответа на мою дилемму.
Для этого обсуждения у меня есть две модели. Пользователи и записи. Пользователи могут иметь много записей (по одной на каждый день).
Записи имеют значения и даты send_at.
Я хочу запросить и отобразить среднее значение записей для пользователя ПО ДНЯМ НЕДЕЛИ. Итак, если пользователь ввел значения, скажем, за последние 3 недели, я хочу показать среднее значение для воскресенья, понедельника и т. д. В MySQL это просто:
SELECT DAYOFWEEK(sent_at) as day, AVG(value) as average FROM entries WHERE user_id = ? GROUP BY 1
Этот запрос вернет от 0 до 7 записей, в зависимости от того, сколько дней у пользователя была хотя бы одна запись.
Я просмотрел find_by_sql, но пока я ищу Entry, я не хочу возвращать объект Entry; вместо этого мне нужен массив до 7 дней и средние значения...
Кроме того, меня немного беспокоит производительность этого, так как мы хотели бы загрузить это в пользовательскую модель, когда пользователь входит в систему, чтобы ее можно было отобразить на их панели инструментов. Любые советы / указатели приветствуются. Я относительно новичок в Rails.