私のグループ モデルには has_many の投稿、投稿には have_many のコメントがあります。
グループの投稿を表示するとき、投稿にある場合は最新のコメントの作成日時、または投稿自体の created_at で並べ替えたいと思います。
そのため、新しいコメントがある場合、古い投稿はリストの先頭に戻ります。
私のグループ モデルには has_many の投稿、投稿には have_many のコメントがあります。
グループの投稿を表示するとき、投稿にある場合は最新のコメントの作成日時、または投稿自体の created_at で並べ替えたいと思います。
そのため、新しいコメントがある場合、古い投稿はリストの先頭に戻ります。
私は少し異なるアプローチに固執します:あなたComment belongs_to :post
とbelongs_to
受け入れ:touch
オプション。に設定するtrue
と、コメントの変更時に投稿updated_at
が自動的に更新されます。このようにして、自分の投稿を の順に並べて自由に表示できますupdated_at
。
commented_at:datetime 列を posts テーブルに追加してから、 before_create コールバックを Post モデルに追加できます。
before_create :set_default_commented_at
def set_default_commented_at
self.commented_at ||= Time.now
end
そして、:touch を Comment モデルの belongs_to 関連付けに追加します。
belongs_to :post, touch: :commented_at
やはりcommented_at列で注文できるようになります。