【发布时间】:2010-06-04 04:11:55
【问题描述】:
我有具有 cmets 的对象。作为定期电子邮件摘要的一部分,我想确定一段时间内的 cmets,并按照最早评论对象的顺序显示对象。
数据:
object_id comment_id
30 40
40 42
32 41
30 43
32 44
输出:
对象 #30
- 评论40
- 评论43
对象 #40
- 评论42
对象 #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)
【问题讨论】:
标签: ruby-on-rails ruby arrays