我有模型主题和帖子。
routes.rb
resources :topics do
resources :posts
end
我想在本主题的最后一篇文章中按created_at排序主题。
@topics = Topic.order(???)
更新:
Topic.includes(:posts).order("posts.created_at desc")
这段代码很棒,但如何订购没有帖子的新主题?没有帖子的新主题必须排在首位。
答案 0 :(得分:1)
假设主题和帖子之间存在“has_many”关系,那样的话应该有效:
Topic.includes(:posts).order("posts.created_at desc")
请注意,嵌套路线(如您所示)并不意味着模型之间的关系。
答案 1 :(得分:0)
这是我喜欢使用的方式
Topic.includes(:posts).merge(Post.order(created_at: :desc))
如果你有更好的范围
class Post < ActiveRecord::Base
scope :ordered_by_creation, -> { order(created_at: :desc) }
end
查询将变为
Topic.includes(:posts).merge(Post.ordered_by_creation)