我的组模型有_many 帖子,帖子有_many 评论。
当我在组中显示帖子时,我想按最近评论的 created at 排序,如果帖子上有任何评论,或者按帖子本身的 created_at 排序。
因此,如果旧帖子有新评论,它会跳回列表顶部。
我的组模型有_many 帖子,帖子有_many 评论。
当我在组中显示帖子时,我想按最近评论的 created at 排序,如果帖子上有任何评论,或者按帖子本身的 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 列订购。