如何在rails

时间:2015-12-03 15:24:52

标签: ruby-on-rails ruby-on-rails-4

我正在构建一个简单的电子学习系统,其中包含许多课程,每个课程都属于某种类型的内容(多态)。

关系到位,但现在我正在计划如何创建路线和控制器。

我的计划如下:

CoursesController ,具有创建新课程的创建功能。在查看新创建的课程(show)时,我可以添加特定类型的课程内容(假设有3种类型)。现在我有点想办法解决这个问题。

一些选项:

  1. 创建单独的“创建内容类型”按钮,在每个类型的内容中调用StepsController中的单独方法:new_video,new_content(etc。)

  2. 创建一个新方法并处理表单中类型的选择,然后我必须根据选择输入或其他东西动态调整我的表单(?)

  3. 对特定内容类型的控制器使用新方法:VideoContentsController(我实际上是否需要针对每种内容类型的特定控制器?)

  4. ...

  5. 我希望能够更深入地了解如何解决这个问题。也许是一个教程,如果有人知道解决这个问题?

    根据要求,我的模特,我现在选择使用单个表作为我的课程(称为步骤)。我根据这篇文章做出了这个决定:https://about.futurelearn.com/blog/refactoring-rails-sti/comment-page-1

    class Course < ActiveRecord::Base
      has_many :steps
    end
    
    class Step < ActiveRecord::Base
      belongs_to :course
      belongs_to :content, polymorphic: true, foreign_type: :content_type, foreign_key: :id
    end
    
    class Video < ActiveRecord::Base
        self.table_name = 'steps'
        default_scope { where(content_type: name) }
    end
    

    我仍然在考虑设置路线/控制器和表单的最佳方法。

0 个答案:

没有答案