【发布时间】:2017-07-11 19:01:04
【问题描述】:
我有两个模型:Patient 和 CodeStatus。
CodeStatus belongs_to Patient 和 Patient has_one CodeStatus
我正在尝试查询 patient.code_status 为 nil 的所有患者。我惊讶地发现Patient.where(code_status: nil) 不能扔:column patients.patient_id does not exist
我已经找到this (fairly old) answer,但我很难相信查询它的最佳方法是通过一长串原始 SQL。我认为 rails 会像许多其他协会一样包含这个助手。有谁知道一个不那么冗长的解决方案?提前致谢。
【问题讨论】:
-
几个问题:1)
Patient.primary_key和CodeStatus.primary_key的输出是什么? 2) 为什么查询要从 patients.patient_id 列开始?默认情况下,它应该期望主键是patients.id... 3)您可以将整个 has_one/belongs_to 行添加到您的问题中吗?您是否将任何选项传递给这些方法? 4) 你可以为这两个表添加 db/schema 吗? -
where(column: nil)受支持并使用 postgres 生成WHERE "table"."column_name" IS NULL。您可能弄乱了关联定义。如果CodeStatus属于Patient,则CodeStatus必须有一个patient_id列。
标签: sql ruby-on-rails ruby ruby-on-rails-4.2 ruby-2.3