私のプログラムモデルにはこれがあります:
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、不正な要求」が表示され、何も返されません。