2

この入力から: {'hearing' => 1} このクエリを生成する必要があります

Score.joins(:target_disability).where{ (target_disabilities.name == 'hearing') & (round(total_score) >= 1) }

この入力から {'hearing' => 1, 'mobility' => 2} を生成する必要があります。

Score.joins(:target_disability).where{ (target_disabilities.name == 'hearing') & (round(total_score) >= 1) | (target_disabilities.name == 'mobility') & (round(total_score) >= 2) }

等々...

これはどのように一般化できますか?私の入力には3つまたは4つのキーがある場合があるため... 1つの場合もあります...

4

1 に答える 1

2

ハッシュが次の場所にあると仮定しますmy_params

@scores = Score.joins(:target_disability).where do
    my_params.map{|k,v| (target_disabilities.name==k) & (round(total_score)>=v) }.inject(:|)
end
于 2012-05-13T12:42:57.047 に答える