Ruby on rails rails有多个vs有多个通过?
我已经读过关于关系标识符Ruby on rails rails有多个vs有多个通过?,ruby-on-rails,Ruby On Rails,我已经读过关于关系标识符有很多和有很多到。我似乎不明白他们之间的区别。例如,如果我有3个模型,医生、预约和患者 class Doctor< ActiveRecord::Base has_many :appointments has_many :patients, through: :appointments end class Appointment < ActiveRecord::Base belongs_to :doctor belongs_to :patie
有很多
和有很多到
。我似乎不明白他们之间的区别。例如,如果我有3个模型,医生、预约和患者
class Doctor< ActiveRecord::Base
has_many :appointments
has_many :patients, through: :appointments
end
class Appointment < ActiveRecord::Base
belongs_to :doctor
belongs_to :patient
end
class Patient < ActiveRecord::Base
has_many :appointments
has_many :doctors, through: :appointments
end
classdoctor
难道我不能说医生有很多:病人和病人有很多:医生,他们会有联系吗?通过预约来做这件事的目的是什么
谢谢
< P>使用“通过”表的唯一原因是当您想使用中间表中包含的相关数据时,在这种情况下,与医生和病人有关的预约数据。 另外,has\u many
需要一个相关的归属于
,反之亦然,因此您必须在这两个模型中使用has\u和_own\u归属于
来表示多对多关系,并创建相应的联接表
否则,是的,您可以简单地在各自的文件中使用has\u和\u-belishing\u-to\u-many:patients
和has\u和\u-belishing\u-to\u-many:doctors
请特别注意中的第2.8节。这可能需要一些通读,但一旦你明白了,我保证它会有意义的。你是对的。如果你说一个医生有很多:病人,而一个病人有很多:医生,那么他们是相关的 然而,我认为本教程的目的是实现多对多的关联 如果医生模型和患者模型由
关联,则医生独占一名患者,患者拥有一名医生。但通常情况下,情况可能并非如此。一个医生可以有很多病人,而这些病人不必只属于医生;他们可能会有其他医生
这就是多对多关联的时候。在多对多关联中,一个对象可以有许多属于它的对象,但不是唯一的。这就像医生模型和病人模型之间的关联
有两种方法可以创建多对多关联:
拥有并且属于许多人
通过:
#连接表有很多东西
在您的情况下,您使用的是第二种方式,即连接表association
关于这两个方面的详细解释,请参阅本文。此外,这将是有益的