我的程序模型有这个:
has_many :registry_patient_counts
scope :salary_and_bonus,
:joins => :registry_patient_counts,
:order => "patient_count_percentage DESC"
当我使用我的控制器开始简单的婴儿步骤时,这很有效,这是:
programs =
Program.includes([:registry_patient_counts])
.salary_and_bonus.where('organization_id = 1')
.limit(2)
但我的最终控制器应该是这样的(没有范围的情况下看起来如何)
@programs = Program.includes(
[:registry_patient_counts, measures: :measures_off_targets])
.where('organization_id = 1')
.limit(2)
所以请注意它有一个 measures: :measures_off_targets
额外的。所以在measures和measures_off_targets之间类似地,我想定义一个与前一个类似的范围......但是我不明白如何在控制器中输入这两个范围?
编辑:所以这就是我们到目前为止通过以下答案得到的:
在 Program.rb 中:
scope :rpc, includes(:registry_patient_counts).order => "patient_count_percentage DESC"
scope :msr, includes(measures: :measures_off_targets)
控制器查询如下所示:
@programs2 = Program.rpc.msr.where('organization_id: 1').limit(2)
RubyMine 在 IDE 中显示的错误是“找不到 msr” 如果我忽略它并转到浏览器,仍然在 Rail 控制台中,我会收到“错误 500,错误请求”并且没有任何回复。