I have this class:
class Report
include ActiveModel::Model
attr_accessor :start_date, :end_date, :show_sales, :show_daily_active_users,
:show_registered_cc, :show_all_time_registered_cc, :show_users
def initialize(params)
params ||= {}
@start_date = to_date(params, :start_date, Time.zone.today - 7.days)
@end_date = to_date params, :end_date, Time.zone.today
@show_sales = to_b params, :show_sales, true
@show_daily_active_users = to_b params, :show_daily_active_users, true
@show_registered_cc = to_b params, :show_registered_cc
@show_all_time_registered_cc = to_b params, :show_all_time_registered_cc
@show_users = to_b params, :show_users
end
def sales
(...)
end
(...)
private
def to_date(params, key, default_val)
if params.key?(key)
Date.parse(params[key])
else
default_val
end
end
def to_b(params, key, default_true = false)
default_val = '1' if default_true
params.fetch(key, default_val) == '1'
end
end
The idea is that I am getting the params from a GET
request in the form of a Hash (symbol→str) and I want to transform them into dates and booleans. For that reason, I created two private methods to_date
and to_b
.
The problem is that Rubocop says that the Assignment Branch Condition size for the method initialize
is too high (15.81 over a limit of 15).
Is there anything I could change to fix that? I don't think that creating a new class just to do that is worth it.