Rails 4 api 默认限制参数不通过 cops

Rails 4 api default limit params do not pass cops

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

代码

  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

Cop 错误

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. 如果 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