Rails ……我是否正确建模?

在我的申请中,有一些课程有步骤。 (用户通过按顺序查看步骤继续学习课程)

但是有许多类型的步骤(测验,文本,video……等)。 在这个例子中,我将展示其中的两个步骤。

这是我目前的数据库/模型设计:

脚步

  • ID
  • step_type_id
  • CLIENT_ID
  • 标题
  • 摘要
  • 位置

关系

  • belongs_to:客户
  • belongs_to:step_type
  • has_one:step_quiz
  • has_one step_text

step_quizzes

  • ID
  • step_id的数据类型
  • 说明
  • correct_to_pass
  • retakes_allowed
  • 时限

关系

  • belongs_to:step
  • has_many:quiz_questions

step_texts

  • ID
  • step_id的数据类型
  • 内容

关系

  • belongs_to:step

之前有人向我建议这是一种多态关系,但我想我不知道它是怎么回事。 我将其视为inheritance关系,其中子步骤类型从步骤表inheritance其基本信息。 这可以用不同的方式建模吗?

似乎在这个例子中最好的方法是使用STI 。 多态关联对于反向关系更好 – 例如。 当有多个事情可以有相同的步骤(课程,研讨会,……)。