私は3つのオプションパラメータparam1
,param2
およびparam3
を持っています。ユーザーは任意の組み合わせで任意の数を渡すことができます。オプションパラメータの存在の確認
3つのすべてが渡された場合のparamキーは以下のように存在している場合、私は確認することができます。
def index
return unless params.key?(:param1) && params.key?(:param2) && params.key?(:param3)
@test = Model.where(param1: params[:param1],
param2: params[:param2],
param3: params[:param3])
end
しかし、私は唯一のparam1
が渡されたりした場合などの他の条件のために同じコードを繰り返す必要はありませんparam1
そしてparam2
は、例えばを渡されたり、同じparamが二回渡すことができます。
http://localhost:1000/orders?param1[]=abc¶m1[]=
(ABCと同じのparam1のためのブランク値を渡します)
<ActionController::Parameters {"pram1"=>["abc", ""], "format"=>:json, "controller"=>"orders", "action"=>"index", "order"=>{}} permitted: false>
これらのパラメータの存在を確認するより良い方法がありますので、私は同じコードを繰り返す必要はありませんか?
コードは正常ですか?私は 'params.key?(:param1)&& params.key?(:param1)&& params.key?(:param1)'は、 '' params.key? params.key?(:param2)|| params.key?(:param3) ' – Salil
3つのパラメータがすべて渡され、where句が渡されたものに基づいている場合は、まあまあです。 – mike
'param2'と' param2'であると仮定した場合、それぞれ 'param1'のタイプミスがありますが、' param1とparam2は存在しますがparam3は存在しません。 'というコードでも戻ります – Salil