次のこともできます。
unless params.values_at(:one, :two, :three, :four).includes?(nil)
... excute code ..
end
1つまたは2つ以上のパラメーターをチェックする場合は、上記のソリューションを使用する傾向があります。
.values_atは、未定義のparamキーの代わりにnilの配列を返します。つまり:
some_hash = {x:3, y:5}
some_hash.values_at(:x, :random, :y}
以下を返します:
[3,nil,5]
.includes?(nil)は、配列にnil値がないかどうかを確認します。配列にnilが含まれている場合はtrueを返します。
場合によっては、paramsにfalse値の空の文字列が含まれていないことを確認することもできます。
これらの値を処理するには、unlessステートメントの上に次のコードを追加します。
params.delete_if{|key,value| value.blank?}
まとめると、次のようになります。
params.delete_if{|key,value| value.blank?}
unless params.values_at(:one, :two, :three, :four).includes?(nil)
... excute code ..
end
delete_ifはハッシュ/パラメータを変更するため、注意して使用することに注意してください。
上記の解決策は明らかに設定に少し手間がかかりますが、1つまたは2つ以上のパラメーターをチェックする場合は価値があります。
params
がRailsコントローラーメソッド(たまたまHashWithIndifferentAccessを返す)であるとすると、それはRailsに関するものです。