ユーザーがさまざまな種類の組み合わせを使用してさまざまな方法でフィルタリングできるテーブルがあります。ユーザーから取得するすべての入力データを使用して、SQLからユーザーデータをエスケープすることが重要でした。これにより、現在発生している問題が発生します。アクションに送信されたパラメータに基づいて動的に構築される2つの配列があります。1つの配列にはSQL句が含まれ、もう1つの配列にはそれぞれの計算とペアになる値が含まれます...たとえば...
def results
sql_clauses = Array.new
sql_args = Array.new
unless params[:elapsed_time].nil?
sql_clauses << "elapsed_time = ?"
sql_args << params[:elaped_time]
end
unless params[:age_greater_than].nil?
sql_clauses << "age > ?"
sql_args << params[:age_greater_than]
end
.....
@results = Model.where(sql_clauses.join(" and "), sql_args.join(", "))
end
これで、sql_clauses配列がwhereメソッドに問題なく送信されます。ただし、2番目の引数は、単一の文字列を返し、各「?」に対応する個々の変数を期待しているため、爆破されます。sql_clauses配列に表示されるフィールド。私は、KandadaBogguが提供する、レール内の条件のComine配列に関するソリューションを試しました。これらのオプションはどちらも機能しませんでしたが、1つではなく2つのアレイを使用していることが原因である可能性があります。
誰かが私の問題の解決策を知っていますか?