我有两个模型:Patient
和CodeStatus
。
CodeStatus belongs_to
患者和患者has_one
CodeStatus
我试图查询patient.code_status
为零的所有患者。我很惊讶地发现Patient.where(code_status: nil)
无法投掷:column patients.patient_id does not exist
我已经找到了this (fairly old) answer,但我发现很难相信查询这个问题的最佳方法是通过一长串原始SQL。我认为rails会包含这个帮助器,就像它们对许多其他关联一样。有没有人知道一个不那么冗长的解决方案呢?提前致谢。
答案 0 :(得分:3)
问题是,
patient.code_status
不是一个列,而是一个方法,当你说
时由Rails添加class Patient
has_one :code_status
end
以下是您如何让所有患者与任何代码状态无关:
Patient.includes(:code_status).where(code_statuses: { id: nil })