跟踪进度,学习管理系统,Ruby on Rails 4,架构问题

时间:2015-04-28 12:49:30

标签: ruby-on-rails

我目前正在使用rails 4构建学习管理系统,我正在努力提高自己的技能。我无法弄清楚如何实现以下迭代。

每个学生都有很多课程,每门课程都有很多课程,因此每个学生都有很多课程

型号: 用户 课程 吸取

我要做的是实施跟踪进度系统,以便当用户完成观看他点击的视频时转到下一个视频,然后就可以在他们的个人资料页面上看到进度。

有关如何实施的建议吗?跟踪进度对我来说真的很痛苦,我不知道如何做到这一点!对不起,如果我不够清楚。任何帮助将不胜感激!谢谢!

1 个答案:

答案 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标记为已完成。