2016-09-27 165 views
0

我的搜索引擎从参数中检索了一些搜索过滤器,但如果没有“过滤器”参数,我需要做其他操作。检查集合中是否存在某些参数

我以前做

params.slice(*filter_params).any? 

但现在我得到一个

弃用警告:任何方法?已弃用,并将在Rails 5.1中删除,因为ActionController::Parameters不再继承哈希。使用此弃用行为会暴露潜在的安全问题。如果您继续使用此方法,则可能会在您的应用中创建可被利用的安全漏洞。相反,考虑使用未弃用这些记录方法之一:http://api.rubyonrails.org/v5.0.0.rc1/classes/ActionController/Parameters.html

我不知道我能做些什么来这里更换.any?电话吗?

+0

嘿,如果任何答案解决了你的问题,请确保接受它。附:您是否尝试过我在评论中提出的任何建议以回答[此前的问题](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?'来引入安全风险,并且失去了strong param的'@ allowed'状态,这就是为什么从哈希继承首先被移除的原因:https://github.com/rails/导轨/拉/ 14384 –

0

您可以使用!.blank?或!.empty?