1

2 つのモデルをマージして、created_at 列で並べ替えたいと考えています。モデルの 1 つは写真で、もう 1 つはステータスです。現在、写真とステータスの 2 つのタブがあり、それぞれのモデル データを作成された時点で別々に表示しています。しかし、写真とステータスという別のタブを作り、まとめて表示したい。私の質問は、それらが一緒に作成されるまでに両方を表示するにはどうすればよいかということです。たとえば、このような順序で並べたいと思います

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 に答える