面对代码中的这种“警告”。
弃用警告:方法长度已弃用,将在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
我可以这样做吗?
答案 0 :(得分:1)
您可以使用dig
方法在Rails 5.1中执行检查的第二部分。
params.to_unsafe_h.dig(:q, :s).present?
在Rails 5.1中使用length
有点棘手,因为params
现在包含controller
和action
个键,所以请注意这一点。