2

私はこのRailsの世界に不慣れです。そして、私はこの問題に頭を悩ませることができません。マイクロポストが作成された日付順に @microposts を取得する方法。

これがラインです

 @microposts = current_user.followeds.map(&:microposts).flatten

「followeds」を日付順に並べることしかできませんでしたが、それは私が探しているものではありません。私が行ったすべての試みでエラーが発生したため、いくつかの構文を認識していないと思います。

どんな助けでも大歓迎です!

4

2 に答える 2

2

通常、次のようにorder句を追加します。

Micropost.where(:written_by => current_user.followeds).order(:created_at)

ただし、現在この行を構造化している方法では、orderActiveRecord::Relations でのみ使用可能であるため、それが許可されていません。これを行うmapと、チェーンに使用できる Relation がなくなります。

その場合、次のようなものが必要になります。

current_user.followeds.map(&:microposts).flatten.sort_by { |m| m.created_at }
于 2012-04-12T12:30:10.640 に答える
0

これには別の角度からアプローチする必要があると思います。

このようなものはどうですか:

@microposts = Micropost.where(author_id: current_user.followed_ids).order(:created_at).all

author_idもちろん、どのユーザーMicropostによって書かれたかを識別するために必要な外部キーを交換する必要があるかもしれません。

投稿を逆にしたい場合 (最新のものから)、order("created_at desc")代わりに書くだけです。

于 2012-04-12T12:30:21.390 に答える