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

    关于这两个方面的详细解释,请参阅本文。此外,这将是有益的