Activerecord 活动记录关系中的上一条记录和下一条记录-Rails 6

Activerecord 活动记录关系中的上一条记录和下一条记录-Rails 6,activerecord,ruby-on-rails-6,Activerecord,Ruby On Rails 6,我有以下模型:课程、主题、类别、文章 一门课程有很多主题 一个主题有许多类别 一个类别有许多文章 我需要实现一个下一篇文章btn,它将返回当前类别中的下一篇文章,然后跳转到第二篇,当主题中的类别完成时,跳转到下一个主题,依此类推。主题、类别和文章按custom\u order:integer属性排序 我让它像这样工作,但我真的认为它必须是一个更好的方式:) 基本上获取课程中的所有文章,并使用ActiveRecord\u关系作为数组返回。在articles\u控制器中获取当前文章的索引,并返回

我有以下模型:课程、主题、类别、文章

  • 一门课程有很多主题
  • 一个主题有许多类别
  • 一个类别有许多文章
我需要实现一个下一篇文章btn,它将返回当前类别中的下一篇文章,然后跳转到第二篇,当主题中的类别完成时,跳转到下一个主题,依此类推。主题、类别和文章按
custom\u order:integer
属性排序

我让它像这样工作,但我真的认为它必须是一个更好的方式:)

基本上获取课程中的所有文章,并使用
ActiveRecord\u关系
作为数组返回。在
articles\u控制器中
获取当前文章的索引,并返回
all\u articles[index+1]
。 如果没有返回任何记录(
nil
),则没有剩余的文章

# course.rb

  def all_articles
    Article.published
           .includes(category: :topic)
           .where(categories: { topic: [topics] })
           .order('topics.custom_order, categories.custom_order, articles.custom_order')
  end