【发布时间】:2014-10-11 23:38:16
【问题描述】:
我正在创建一个学习管理系统,管理员可以在其中创建课程并将其分配给用户。 A Curriculum has_many Courses,用户将课程标记为已完成。
现在,我想扩展此功能并添加一个文档模型,管理员可以在其中上传文档并将其分配给用户。然后,用户必须来到平台并将文档标记为已完成,类似于他们与课程的交互方式。
我知道我应该从 AssignableMaterial 之类的模型开始,并让 Curriculums 和 Document 继承自 AssignableMaterial,但我认为我不会添加 Documents。添加文档并仍然使用课程中的“分配”功能和课程中的“标记为完成”功能的最佳方法是什么?
Document 是否可以从 Curriculums 继承,或者我是否必须将与 Curriculums/Courses 相关的所有方法移动到父模型 AssignableMaterial,然后从该父模型继承 Document?
【问题讨论】:
-
课程相关的文档是否已分配给用户?
-
不,文档与课程完全无关,但用户与课程的交互类似于课程。用户被分配,他们完成它们。尽管文档和课程不直接相关,但我想找到用户作业的完成率。 (即如果用户被分配了 1 个文档和 1 个课程,并完成了文档,user.overall_completion_rate_of_tasks 将返回 50%)
标签: ruby-on-rails ruby oop inheritance single-table-inheritance