Hello I am new at ruby programming. Ran rubocop inspection in my project and it says:
Method has too many lines. [13/10] def refresh_status
Here is my methods:
def refresh_status
lost = false
in_progress = false
won = false
@bets.each do |bet|
lost = true if bet.result == :lost
if bet.result == :canceled
@to_return /= bet.odd
won = true
end
in_progress = true if bet.result == :in_progress
won = true if bet.result == :won
end
def_result_after_refresh(lost, in_progress, won)
end
def def_result_after_refresh(lost, in_progress, won)
if lost
@result = :lost
elsif in_progress
@result = :in_progress
elsif won
@result = :won
end
end
Can't find a way to make that method shorter, maybe you could help?
You can use some the Enumerable
methods.
def refresh_status
@to_return /= @bets.select { |bet| bet.result == :canceled }.map(&:odd).reduce(1, :*)
results = @bets.map { |bet| bet.result == :cancelled ? :won : bet.result }.uniq
@result = case
when results.include?(:lost) then :lost
when results.include?(:in_progress ) then :in_progress
when results.include?(:won) then :won
end
end