【问题标题】:DEPRECATION WARNING: Method length is deprecated and will be removed in Rails 5.1弃用警告:方法长度已弃用,将在 Rails 5.1 中删除
【发布时间】:2017-08-02 19:01:40
【问题描述】:

在代码行中遇到这样的“警告”。 弃用警告:方法长度已弃用,并将在 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可以吗?

【问题讨论】:

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


    【解决方案1】:

    您可以像这样使用dig 方法在 Rails 5.1 中进行第二部分检查。

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

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

    【讨论】:

    • 这是什么方法?
    猜你喜欢
    • 2017-03-08
    • 2017-05-25
    • 2016-12-07
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多