Rails-多对多关联

时间:2018-10-16 13:59:02

标签: ruby-on-rails

我的教育应用程序使用单个数据库,并拥有许多用户。我有以下问题:

user1完成课程(课程模型的列以boolean结尾)后,所有其他用户的课程均结束(finished = true)。

我希望本课程对于user1已经结束,但对于所有其他用户而言尚未完成。

换句话说,如何将user1完成的数据库更改与user2完成的更改区分开?

先谢谢了。

1 个答案:

答案 0 :(得分:1)

为此,您可以使用具有users_lesson_progresseshas_many :through关联的名为has_and_belongs_to_many的联接表。

https://guides.rubyonrails.org/association_basics.html此处查看文档

这个想法是在users_lesson_progresses表中,对于每对用户和课程,您将有一个单独的行。用户完成课程后,您将为此特定用户和该课程创建一行,并将completed列值设置为true。或者,在用户开始课程后,您可以将state表中的users_lesson_progresses列设置为started,并在他完成后将该列值设置为finished。其他任何用户和任何其他课程均相同。那是一个例子。您的方法可能有所不同,但主要思想是相同的。