在Rails中has_many关系中的排序引用

时间:2018-08-12 06:31:24

标签: ruby-on-rails database database-design

我正在为Rails应用计划我的数据库架构,其中一部分涉及构建各种动态课程。架构看起来像这样:

Schema Diagram

我的问题是,虽然我希望“问题”和“片段”成为他们自己的模型,但我希望每节课对问题和片段的排序都是自己的。就像在两个不同的课程中,可能会遇到一些相同的问题和摘要,但是顺序不同。

在rails中执行此操作的最佳方法是什么?我在想,课程可以保留一组ID来跟踪顺序,但这似乎不是很常规。

这是否有标准?

谢谢!

1 个答案:

答案 0 :(得分:1)

您需要一个中间表,该表在课程和问题之间以及课程和摘要之间具有has_many: through关系。

class Lesson < ApplicationRecord
  has_many :lesson_problems, dependent: :destroy
  has_many :problems, through: :lesson_problems
end

class Problem < ApplicationRecord
  has_many :lesson_problems, dependent: :destroy
  has_many :lessons, through: :lesson_problems
end

class LessonProblem < ApplicationRecord
  belongs_to :problems
  belongs_to :lessons
end

在lesson_problems表中,将有一个名为order的额外列。 课程和摘要也是如此。 可以找到详细信息here