我正在创建一个应用程序,允许用户创建课程并在课程中包含不同类型的资源(文档、视频、测验)。我很难找出在课程与其资源之间建立关联的最佳方式。
现在,我有:
class Course < AR::Base
has_many :documents
has_many :videos
has_many :quizzes
end
class Document <AR::Base
belongs_to :course
end
class Video <AR::Base
belongs_to :course
end
class Quiz <AR::Base
belongs_to :course
end
文档、视频和测验都有一些共同的属性(例如,名称、描述),但也有许多不同的属性。我考虑过使用 STI 并让它们继承自一个名为“Lessons”的类。我决定反对这种方法,因为每个类都需要多个控制器。
最终,我希望能够对属于课程的所有资源执行操作,例如将所有文档、视频和测验一起列出,并将它们显示为可排序的列表。
有关如何最好地设置此模型的任何建议。似乎我可以通过两种方式做到这一点:
我是一个 Rails 菜鸟,所以我很难评估哪种方法最适合这种情况。任何意见,将不胜感激!