如果我理解您的问题,您实际上是在描述一种关联-一对多。 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