Rails 3: .group (), заказанный created_at

Каким способом Rails 3 упорядочивает результаты .group () в Activerecord (здесь "created_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")

Но это извлекает только отдельные записи (те, которые не сгруппированы). Предположительно сгруппированные не указываются. Не знаю почему, все записи имеют значения: created_at и: foo

13
задан ekad 21 November 2017 в 14:53
поделиться