Ruby on rails Rails ActiveRecord连接混淆
在控制台中,此代码:Ruby on rails Rails ActiveRecord连接混淆,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,在控制台中,此代码: Patient.joins(:notes,:recordings).find(1) 返回 ActiveRecord::RecordNotFound: Couldn't find Patient with id=1 这很奇怪,因为在同一个控制台中,Patient.find(1)可以毫无问题地工作,并检索id为1的患者的记录 我的理解是,我应该能够做到: a = Patient.joins(:notes,:recordings).find(1) a.notes a.reco
Patient.joins(:notes,:recordings).find(1)
返回
ActiveRecord::RecordNotFound: Couldn't find Patient with id=1
这很奇怪,因为在同一个控制台中,Patient.find(1)
可以毫无问题地工作,并检索id为1的患者的记录
我的理解是,我应该能够做到:
a = Patient.joins(:notes,:recordings).find(1)
a.notes
a.recordings
a.notes应返回与id为1的患者相关的所有注释,并且a.notes的记录相同。很明显,我在这里遗漏了一些东西……有什么想法吗?这是因为rails在默认情况下是内部连接的。您的患者
1
既没有笔记
也没有记录
如果你可以做一个左连接
Patient.joins("LEFT JOIN notes on notes.patient_id = patients.id")
.joins("LEFT JOIN recordings on recordings.patient_id = patients.id")
.find(1)
或者加载患者,然后加载关联
a = Patient.find(1)
a.notes
a.recordings
这是因为rails在默认情况下是内部连接的。您的患者
1
既没有笔记
也没有记录
如果你可以做一个左连接
Patient.joins("LEFT JOIN notes on notes.patient_id = patients.id")
.joins("LEFT JOIN recordings on recordings.patient_id = patients.id")
.find(1)
或者加载患者,然后加载关联
a = Patient.find(1)
a.notes
a.recordings
这是因为rails在默认情况下是内部连接的。您的患者
1
既没有笔记
也没有记录
如果你可以做一个左连接
Patient.joins("LEFT JOIN notes on notes.patient_id = patients.id")
.joins("LEFT JOIN recordings on recordings.patient_id = patients.id")
.find(1)
或者加载患者,然后加载关联
a = Patient.find(1)
a.notes
a.recordings
这是因为rails在默认情况下是内部连接的。您的患者
1
既没有笔记
也没有记录
如果你可以做一个左连接
Patient.joins("LEFT JOIN notes on notes.patient_id = patients.id")
.joins("LEFT JOIN recordings on recordings.patient_id = patients.id")
.find(1)
或者加载患者,然后加载关联
a = Patient.find(1)
a.notes
a.recordings
您可能对include类型功能感兴趣(用于即时加载)。请参阅:您可能对包含类型功能感兴趣(用于快速加载)。请参阅:您可能对包含类型功能感兴趣(用于快速加载)。请参阅:您可能对包含类型功能感兴趣(用于快速加载)。请参阅:将查找(1)更改为第一个
?当id不存在时,是否有方法使其返回空关联而不是抛出错误?更好的解决方案是耐心。包括(:注释,:录制)。查找(1)更改查找(1)首先执行
?当id不存在时,是否有方法使其返回空关联而不是抛出错误?更好的解决方案是耐心。包括(:注释,:录制)。查找(1)更改查找(1)首先执行
?当id不存在时,是否有方法使其返回空关联而不是抛出错误?更好的解决方案是耐心。包括(:注释,:录制)。查找(1)更改查找(1)首先执行
?当id不存在时,是否有方法使其返回空关联而不是抛出错误?更好的解决方案是耐心。包括(:注释,:录制)。查找(1)