导轨多种帖子类型:嵌套形式和复杂的关联



我在找出为教育平台创建讲座和测验的最佳方法时有一个问题。

首先,我有两个型号:

课程。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

相关内容

  • 没有找到相关文章

最新更新