2016-09-27 7 views
0

検索エンジンがパラメータからいくつかの検索フィルタを取得しますが、「フィルタ」パラメータがない場合は何か別の処理を行う必要があります。セット内にいくつかのパラメータが存在するかどうかを調べる

私は、以前

params.slice(*filter_params).any? 

をしていた。しかし、私は今

DEPRECATION警告取得しています。方法いずれかを? ActionController::Parametersはもはやハッシュから継承しないので、Rails 5.1では廃止され、削除されます。この推奨されない動作を使用すると、セキュリティ上の問題が発生する可能性があります。この方法を引き続き使用すると、悪用される可能性のあるセキュリティ脆弱性があなたのアプリケーションに作成されている可能性があります。代わりに、非推奨されていないこれらの文書のいずれかの方法を使用することを検討してください:http://api.rubyonrails.org/v5.0.0.rc1/classes/ActionController/Parameters.html

私はここに.any?呼び出しを置き換えるために何ができるかわからないんだけど?

+0

お返事のいずれかが問題を解決した場合は、それを受け入れるようにしてください。 P.S.あなたは[私の前の質問](http://stackoverflow.com/q/39698466/1772830)への私の答えへのコメントに私が提案したことを試しましたか?私はちょうど 'qualified_const_get'があなたがそこに必要なものかもしれないと思った(それはちょっとパーティーに遅れていますが) –

答えて

2

あなたはObject#present?でそれを置き換えることができます:

params.slice(*filter_params).present? 
+0

遅く受け入れて申し訳ありません。ここでは私に –

0

あなたはあなたが使用しているハッシュ・メソッドを取得するためにparams.to_hを呼び出すことができます。

+0

がありますが、解決策ではなく解決策のように聞こえます:) –

+0

これはまだ実行可能な解決策です。 OPのシナリオでは、 '.any? 'を使用し、強力なparamの' @ permitted'ステートを失うことでセキュリティリスクが導入されないため、最初はハッシュの継承が削除されました:https://github.com/rails/レール/プル/ 14384 –

0

!.blank?または!empty?

関連する問題