我在找出为教育平台创建讲座和测验的最佳方法时有一个问题。
首先,我有两个型号:
课程。RB
class Course < ApplicationRecord
has_many :sections
accepts_nested_attributes_for :sections, reject_if: :all_blank, allow_destroy: true
end
section.rb
class Section < ApplicationRecord
belongs_to :course
end
,在视图中,我正在使用Cocoon Gem作为嵌套形式,并从同一新页面创建课程和部分。
我的目标是拥有一个具有两种类型的课程模型(讲座,带有注释和评论,以及一个带有问题和答案的测验),问题是我无法找到正确的方法问题。
所以这就是到目前为止我脑海中的原因:
方法1:
使用STI,所以我有一个属于一个部分的课程模型,并且有两个从课程模型讲座和测验类似的模型:
:threns.rb
class Lesson < ApplicationRecord
belongs_to :section
end
讲座rb
class Lecture < Lesson
end
quiz.rb
class Quiz < Lesson
end
,在这里让我感到困惑的是测验模型,它将具有许多其他关联,例如问题,答案和正确的答案,所以我想知道我是否处于正确的道路上还是没有?
方法2:
使用来自Railscast的动态表格,我发现这是此类问题更令人困惑的方法。
牢记我需要讲课和测验模型属于课程模型,以便我可以将数据列为列表,我可以跟踪进度。
更新1:
或我应该为测验和讲座创建独立的模型,并使它们属于课程模型,而课程模型has_one quiz或stuction。
首先,确定最佳数据模型并忽略演示文稿。之后,关注您要如何显示数据。
我建议使用"有"关系而不是STI - 换句话说,您在" Update 1"中推荐的方法。原因是讲座和测验似乎很不一样,因此他们似乎不喜欢STI的候选人。您可以在课程和测验/讲座对象之间进行多态性的" thress_content"关系,但是我将从纯has_one/has_many开始。
实施了一旦可以使用Cocoon或滚动自己的动态表格。我发现(出色的)Railscast过时并写了一篇博客文章,该文章可能在这里使用:带有导轨的动态形式4