Rails:查询nil has_one关联

时间:2017-02-21 22:46:58

标签: sql ruby-on-rails ruby ruby-on-rails-4.2 ruby-2.3

我有两个模型:PatientCodeStatus

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会包含这个帮助器,就像它们对许多其他关联一样。有没有人知道一个不那么冗长的解决方案呢?提前致谢。

1 个答案:

答案 0 :(得分:3)

问题是,

patient.code_status

不是一个列,而是一个方法,当你说

时由Rails添加
class Patient
  has_one :code_status
end

以下是您如何让所有患者与任何代码状态无关:

Patient.includes(:code_status).where(code_statuses: { id: nil })