Как в Rails 3 упорядочить результат .group (), который приводит к Activerecord (здесь «made_at»)?
@messages = Message.group(:foo)
приводит только к отображению самого старого сообщения. Мне нужно, чтобы последний показывали.
Я пытался
@messages = Message.group(:foo).having("created_at = MAX(created_at)")
безуспешно. Любые советы приветствуются!
Чтобы уточнить: я смотрю, чтобы группа была упорядочена внутри себя, а не обычный messages.order ("...").
Если бы не было легкого синтаксиса Activerecord, я был бы рад и сырому SQL
Обновление: пробуя способ SQL, это должно было работать:
@messages = Message.find_by_sql("
SELECT messages.*
FROM messages
GROUP BY messages.foo
HAVING messages.created_at = MAX(messages.created_at)
ORDER BY messages.created_at DESC")
Но при этом извлекаются только отдельные записи (те, которые не сгруппированы). Предположительно, сгруппированные опущены. Не знаю почему, все записи имеют значения: create_at и: foo