0

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

代码

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

1 回答 1

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
于 2016-06-17T05:35:17.277 回答