我正在用 Rails 制作一个非常简单的论坛(更多的是为了体验而不是实际生产可用于生产的代码),我想知道如何实现一个通用功能。
在 topic_controller 的索引中,如果我执行以下操作,最新的主题将位于主题列表的顶部。
主题控制器.rb
def index
@topics = Topic.all.order("created_at DESC")
end
但是,我希望按他们最近的帖子排序主题。当用户创建一个新主题时,他们需要为该主题创建第一个帖子,所以如果我能弄清楚如何通过最近创建的帖子对主题进行排序,那么这将解决所有问题。例如,如果“昨天的主题”刚刚添加了新帖子,则昨天创建的主题(“昨天的主题”)可能仍会放置在今天创建的主题(“今天的主题”)之上。
在模型中,
Topic.rb
has_many :posts
Post.rb
belongs_to :topic
请注意,我确信在 Rails 中有一种方法可以做到这一点,但是我确信在数据库中进行排序会更快,我想知道是否有一种方法可以在数据库中进行排序。但是,如果您只知道 Rails 解决方案就可以了。