У меня есть объекты, у которых есть комментарии.Как часть периодической сводки по электронной почте, я хочу определить комментарии для периода и сначала представить объекты в порядке самого старого закомментированного объекта.
Данные:
object_id comment_id
30 40
40 42
32 41
30 43
32 44
Вывод:
Объект # 30
- комментарий 40
- комментарий 43
Объект #40
Объект # 32
- комментарий 41
- комментарий 44
Я использую этот код для передачи данных в промежуточный массив - я пытался получить все это одним махом, используя .group_by (&: commentable_id), но данные вышли не в правильном порядке.
comments = account.comments.all(
:conditions => ["comments.created_at > ?", 8.hours.ago],
:order => "comments.created_at asc" ).map { |c| [c.commentable_id,c.id] }
=> [ [30,40], [40,42], [32,41], [30,43], [32,44] ]
Если бы я смог преобразовать эти данные в следующую форму, я мог бы просто перебрать массив для создания содержимого электронной почты ...
[ [30,[40,43]], [40,[42]], [32,[41,44]] ]
Но мне интересно, смогу ли яЯ делаю это сложнее, чем мне нужно ... Любой совет?
(я использую Rails 2.3 и Ruby ree-1.8.7)