ActiveRecord关联有什么意义?

我仍然对Rails还是陌生的,但我仍然不明白的是,为什么人们在activeRecord中使用关联。

例如,如果我有一个“患者”类别和一个“医生”类别,我会给“患者”一列称为“医生ID”,然后,如果我想找到一个医生有多少个患者,我会计算“医生”等于他们的医生ID。同样,如果我想查找分配给患者的医生的姓名,则只需找到“患者医生ID”等于“医生ID”的医生即可。

我可以不使用关联就显式且简单地完成所有操作。

从我的角度来看,activeRecord关联使这变得复杂,使用它而不是手动使用自己的ID系统有什么好处?

lx463419 回答:ActiveRecord关联有什么意义?

如果我理解您的问题,您实际上是在描述一种关联-一对多。 Rails使您可以自动执行此操作,从而不必编写SQL即可对医生拥有的患者进行计数。因此,您无需打开数据库连接,执行SQL,对结果集进行解析和计数,而只需查找有问题的医生,例如my_dr,然后执行my_dr.patients.count即可。

您会从多对多关联中看到更大的好处,在这种关联中,手工编写SQL涉及与链接表联接。例如,医生有很多病人,而病人可能有多位医生。因此,除了Doctor模型和Patient模型之外,您还需要一个DoctorPatient模型来保持两者之间的连接。用于该操作的SQL超出了第一个示例中所需的SQL,但是rails仍然允许您使用my_dr.patients来检索和遍历医生的患者。

因此,这样做的好处是避免自己编写SQL。我可以使用SQL,但是与实际的编程语言语法相比,我觉得它脾气暴躁,笨拙,因此能够缩短数据库命令的使用是节省时间和精力的。

,

是的,没有关联,您可以获取Doctor对象(名为doctor)使用了多少患者:

Patient.where(doctor_id: doctor.id).count

但是我不会说使用关联使事情变得复杂,而是通过编写来简化事情:

doctor.patients.count

如果您是协会的新手,并且已经了解数据库,那么学习新事物可能看起来像是另外的麻烦。但是,如果使用它,过一会儿您会发现它简化了事情。

除了具有“多次通过”之外,确实没有什么大的收获,但是随着时间的推移,这些代码中的很多简化都变得很简单。

本文链接:https://www.f2er.com/3148819.html

大家都在问