【发布时间】:2015-12-19 20:30:07
【问题描述】:
我正在尝试获取已提交esas_assessment 的uniq patients 列表,按esas_assessment 为created_at 的时间排序;对于 clinician 即 has_many patients :through 一个名为 care_group_assignments 的表。
我在这里的工作是工作,但当我做到这一点时停止工作,所以clinicians has_many :esas_assessments, :through => :patients 而不是拥有
esas_assessment 具有 clinician_id 字段并直接与临床医生相关联。我需要做出这个选择,以便多个临床医生可以与esas_assessment 关联。
这是我在更改 esas_assessments 与 clinicians 的关联方式之前所拥有的。这是基于this answer。
<% @esas_assessments.order("patient_id, created_at DESC").select('ON (patient_id) *').uniq.limit(99).each_with_index do |esas_assessment, index| %>
这现在给了我:
PG::AmbiguousColumn: 错误: ORDER BY "patient_id" 不明确
我真的不明白为什么这些是模棱两可的,因为 patients 或 clinicians 都没有字段 patient_id 或 created_at。
为了解决这个问题,我使用了this answer 并在模棱两可的字段之前添加了esas_assessment.。
<% @esas_assessments.order("esas_assessment.patient_id, esas_assessment.created_at DESC").select('ON (esas_assessment.patient_id) *').uniq.limit(99).each_with_index do |esas_assessment, index| %>
这给了我错误:
PG::UndefinedTable: 错误:缺少表“esas_assessment”的 FROM 子句条目
: SELECT DISTINCT ON (esas_assessment.patient_id) * FROM "esas_assessments"
INNER JOIN "patients" ON "esas_assessments"."patient_id" = "patients"."id"
INNER JOIN "care_group_assignments"
ON "patients"."id" = "care_group_assignments"."patient_id"
WHERE "care_group_assignments"."clinician_id" = $1
ORDER BY esas_assessment.patient_id, esas_assessment.created_at DESC LIMIT 99
我也尝试过使用this answer,因为它似乎是一个类似的问题,但无法解决。
任何帮助都会很棒。
Rails 4.1.8,红宝石 2.2.1p85,PostgreSQL
【问题讨论】:
标签: ruby-on-rails ruby postgresql activerecord