弃用警告:不推荐使用方法长度,将在Rails 5.1中删除

时间:2017-03-12 19:39:44

标签: ruby-on-rails ruby-on-rails-5

面对代码中的这种“警告”。 弃用警告:方法长度已弃用,将在Rails 5.1中删除,因为ActionController::Parameters不再继承哈希值。使用此弃用行为会暴露潜在的安全问题。如果您继续使用此方法,则可能会在您的应用中创建可被利用的安全漏洞。相反,请考虑使用其中一种未弃用的文档化方法:http://api.rubyonrails.org/v5.0.2/classes/ActionController/Parameters.html

if params[:q].blank? && params[:advanced_search].blank? || params[:q]&.length == 1 && params[:q][:s].present?
  @q.add_default_condition('status', 'in', 'open')
  session[:last_ticket_search] = nil
end

params[:q]&.length == 1可以使用哪些替代方案?

params[:q].to_unsafe_h&.length == 1我可以这样做吗?

1 个答案:

答案 0 :(得分:1)

您可以使用dig方法在Rails 5.1中执行检查的第二部分。

params.to_unsafe_h.dig(:q, :s).present?

在Rails 5.1中使用length有点棘手,因为params现在包含controlleraction个键,所以请注意这一点。