我正在创建一个应用程序,允许用户创建课程并在课程中包含不同类型的资源(文档,视频,测验)。我很难找到在课程和资源之间建立联系的最佳方法。
现在,我有:
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”的类中继承。我决定不采用这种方法,因为我需要为每个类提供多个控制器。
最终,我希望能够对属于课程的所有资源执行操作,例如将所有文档,视频和测验列在一起,并将它们显示为可排序列表。
有关如何最好地设置此模型的任何建议。好像我可以用两种方式做到这一点:
我是铁杆菜鸟,所以我很难评估哪种方法最适合这种情况。任何建议将不胜感激!
答案 0 :(得分:0)
最终,我希望能够对属于某个课程的所有资源执行操作,例如将所有文档,视频和测验列在一起,并将它们显示为可排序列表。
这两种方法都是可行的,但是当我阅读这个要求时,看起来你最好用STI。 STI是rails中本机支持的功能,允许您查询和操作同一集合中的不同类型的资源。