0

私はモデルをフォローしています

役職:

has_many :comments

コメント:

belongs_to :post

pages次のコードを含むコントローラーが呼び出されます。

def home
    @posts = Post.includes(:comments)
    respond_to do |format|
        format.html
    end
end

つまり、P1、P2、P3の投稿が3つあるとしましょう。最初はページ上で同じ順序でレンダリングされhomeます。後でP2にコメントが付けられ、ページを更新した場合、順序はP2、P1、P3になります。したがって、投稿にコメントが付けられると、その投稿が一番上に表示されます。すべての投稿は、コメントが付けられた時間の降順で並べ替える必要があります。どうすればこれを達成できますか?

私の試み-私が試したことは非常に非効率的であり、間違いなく良い習慣ではありません。コメントから降順で一意のpost_idsを取得し、post_idsを使用して投稿を取得します。

レールがそれを行うための最良の方法を提供すると確信しています。高く評価されています。ありがとう。

4

1 に答える 1

3

これを試して、

@posts = Post.includes(:comments).order("comments.created_at desc")
于 2012-08-24T09:52:06.213 に答える