0

我正在开发 Rails 4 中的视频教程应用程序(https://github.com/acandael/courseapp

我正在考虑如何最好地实现用户可以看到他完成了哪些章节以及他观看了哪些视频的功能。已完成的章节旁边会出现一个“已完成”标签,观看过的视频旁边会出现一个复选标记图标。

我认为实现这一点的一种方法,例如章节是在用户模型和章节模型之间创建多对多关联。

关于这个场景的两个问题。除了 user_id 和 chapter_id 外键的字段之外,我的连接表是否需要一个额外的字段,例如 boolean 类型的字段“is_complete”?

第二个问题,如何在我的视图中查看用户是否完成了一章?我可以检查一下吗

@user.chapter.is_complete?

谢谢你的建议,

安东尼

4

1 回答 1

0

多对多关系是处理这种情况的最佳方式。

class Chapter
  has_and_belongs_to_many :users
end


class User
  has_and_belongs_to_many chapters,
                          :as => :completed_chapters # Not sure about this

  def has_completed?(chapter)
    completed_chapters.include?(chapter)
  end
end

# Create a basic relationship here
user    = User.new
chapter = Chapter.new
user.chapters << chapter

user.has_completed?(chapter)
# => true
于 2013-10-23T12:35:19.710 回答