1

テストと呼ばれるネストされたリソースを持つマシン モデルがあります。リニアックには has_many テストがあります。テスト モデルには、「ベースライン」と呼ばれるブール属性があります。また、モデルを持たない Baselines というネストされたリソースもあります。「ベースライン」が「True」に設定されているマシンの最新のテストをすべて集約することを目的としています。

Machine モデルには、energy_x というスコープがあります。

class Machine < ActiveRecord::Base      
scope :energy_x, lambda { |x| where(:energy => x) }

ベースライン コントローラーでは、この名前付きスコープに正常にアクセスできます。

      @energies.each do |energy|    
        @baseline_tests << machine.baseline_tests.energy_x(energy)
      end

しかし、ビューでこのスコープにアクセスしようとすると、

<%= render :partial => "baseline_test", :collection => @baseline_tests.energy_x(energy)  %>

未定義のメソッド エラーが発生します。

    undefined method `energy_x' for #<Array:0x007f9da7686950>

とにかくビューでスコープを使用するべきではないと聞いたことがありますが、パラメーターに従ってコレクション @baseline_tests をソートする方法が必要です。このパラメーターの値には無制限のオプションがあるため、コントローラーで @baseline_tests_1 および @baseline_tests_2 というインスタンス変数を作成しても意味がありません。ビューのループで実行する必要があると思います。

助言がありますか?

4

0 に答える 0