0

This seems a bit crazy here. Is there another way to write this function to get the cops to pass on it, or should I just make it exempt?

Code

  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 Error

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
  ^^^
halfer
  • 19,824
  • 17
  • 99
  • 186
Chris Hough
  • 3,389
  • 3
  • 41
  • 80

1 Answers1

1

What you want to do with this method is:

  1. if params[:limit] exceeds max limit, set it to max limit
  2. if params[:limit] is less or equal to 0, set it to default limit

Code:

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 result:

$ 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
Larry Lv
  • 759
  • 4
  • 10