我目前正在使用rails 4构建学习管理系统,我正在努力提高自己的技能。我无法弄清楚如何实现以下迭代。
每个学生都有很多课程,每门课程都有很多课程,因此每个学生都有很多课程
型号: 用户 课程 吸取
我要做的是实施跟踪进度系统,以便当用户完成观看他点击的视频时转到下一个视频,然后就可以在他们的个人资料页面上看到进度。
有关如何实施的建议吗?跟踪进度对我来说真的很痛苦,我不知道如何做到这一点!对不起,如果我不够清楚。任何帮助将不胜感激!谢谢!
答案 0 :(得分:2)
您应该根据真实世界的实体以及它们之间的关系,为类绘制一个简单的UML图。首先要确保您拥有所有课程来模拟课程的实际结构。 “课程”和“课程”真的足够吗?这很简单吗?
然后,添加新类以跟踪用户的进度。我会在所有这些类名前加上相同的单词,例如“已查看”。这很简单(我怀疑可能太简单了)。我假设课程中包含一个视频,所以当他们观看视频时,他们已经完成了课程。它可能不那么简单,但你没有指定任何其他要求(例如课程作业)。
class Course
has_many :lessons
class Lesson
#fields: course_id
belongs_to :course
class User
has_many :viewed_lessons
has_many :viewed_courses
class ViewedLesson
#fields: user_id, lesson_id, completed(boolean)
belongs_to :user
belongs_to :lesson
class ViewedCourse
#fields: user_id, course_id, completed(boolean)
belongs_to :user
belongs_to :course
当用户报名参加课程时,您可以为他们制作一条view_course记录。您可以通过查找没有该课程的Viewed_lesson和标记为已完成的用户的第一课来确定下一课。
当他们完成视频后,您将相应课程标记为已完成,这意味着上述逻辑将建议下一个视频。完成课程中的所有课程后,您也可以将Viewed_course标记为已完成。