rails 4 api默认限制params不通过警察

时间:2016-06-16 22:43:07

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

TBH,这在这里看起来有点疯狂。是否有另一种方法来编写此函数以让警察传递它,或者我应该让它免除?

代码

  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
  ^^^

1 个答案:

答案 0 :(得分:1)

您想要使用此方法:

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

    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