【问题标题】:Rails 4 api default limit params do not pass copsRails 4 api默认限制参数不通过警察
【发布时间】:2016-06-16 22:43:07
【问题描述】:

这似乎有点疯狂。有没有另一种方法来编写这个函数来让警察通过它,还是我应该让它豁免?

代码

  def set_default_limit
    params[:limit]  = params[:limit].to_i > 0 ? params[:limit] : AppSettings.api[:default_limit]
    params[:limit]  = AppSettings.api[:max_limit] if params[:limit].to_i > AppSettings.api[:max_limit]
  end

警察错误

app/controllers/application_controller.rb:66:3: C: Assignment Branch Condition size for set_default_limit is too high. [18.22/15]
  def set_default_limit
  ^^^

【问题讨论】:

    标签: ruby-on-rails rubocop ruby-style-guide


    【解决方案1】:

    你想用这个方法做的是:

    1. 如果params[:limit]超过最大限制,将其设置为最大限制
    2. 如果params[:limit]小于等于0,设置为默认限制

    代码:

    def set_default_limit
      api_settings = AppSettings.api
    
      if params[:limit].to_i > api_settings[:max_limit]
        params[:limit] = api_settings[:max_limit]
      elsif params[:limit].to_i <= 0
        params[:limit] = api_settings[:default_limit]
      end
    end
    

    Rubocop 结果:

    $ cat test.rb
    def set_default_limit
      api_settings = AppSettings.api
    
      if params[:limit].to_i > api_settings[:max_limit]
        params[:limit] = api_settings[:max_limit]
      elsif params[:limit].to_i <= 0
        params[:limit] = api_settings[:default_limit]
      end
    end
    
    $ rubocop test.rb
    Inspecting 1 file
    .
    
    1 file inspected, no offenses detected
    

    【讨论】:

    • 谢谢。从你的代码的外观和我尝试这个“api_settings = AppSettings.api”是罪魁祸首。
    • 是的,这是一个 api 调用,是“ABC”大小的主要因素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多