1

我有 2 个模型,我有兴趣合并它们,然后按 created_at 列对其进行排序。其中一个模型是照片,另一个是状态。目前,我有两个选项卡、照片和状态,在它们创建时分别显示每个模型数据。但是,我想制作另一个名为照片和状态的选项卡,并将它们一起显示。我的问题是如何在它们一起创建时显示它们。例如,我希望它有一个像这样的订单

Hell World (status posted 4 hours ago)
<img src="blah/blah" /> (posted 6 hours ago)
Hello (status posted 8 hours ago)

有什么建议么?提前致谢

4

2 回答 2

1

在 SQL 中可能有一些巧妙的方法可以做到这一点,但如果你只显示几条记录,那么在 Ruby 中这样做就很好,而且可读。就像是:

@photos = Photo.recent(5)
@images = Image.recent(5)
@both   = (@photos + @images).sort_by(&:created_at).reverse

如果您的目标是显示经典的活动提要,我推荐使用 timeline_fu 插件:

https://github.com/jamesgolick/timeline_fu

非常容易设置,非常漂亮。

于 2011-06-07T02:56:47.910 回答
0

您可以简单地将两者都添加到数组中,然后排序:

@merged = (@statuses.all + @photos.all).sort_by! {|o| o.created_at }
于 2011-06-07T02:57:14.223 回答