Files
grecia/app/models/lock.rb
Javi Martín 28aafbd4bc Add and apply Style/InvertibleUnlessCondition rule
This rule was added in rubocop 1.44.0. It's useful to avoid accidental
`unless !condition` clauses.

Note we aren't replacing `unless zero?` with `if nonzero?` because we
never use `nonzero?`; using it sounds like `if !zero?`.

Replacing `unless any?` with `if none?` is only consistent if we also replace
`unless present?` with `if blank?`, so we're also adding this case. For
consistency, we're also replacing `unless blank?` with `if present?`.

We're also simplifying code dealing with `> 0` conditions in order to
make the code (hopefully) easier to understand.

Also for consistency, we're enabling the `Style/InverseMethods` rule,
which follows a similar idea.
2023-09-07 19:14:03 +02:00

30 lines
491 B
Ruby

class Lock < ApplicationRecord
belongs_to :user
before_save :set_locked_until
def locked?
locked_until > Time.current
end
def set_locked_until
self.locked_until = lock_time if too_many_tries?
end
def lock_time
Time.current + (2**tries).minutes
end
def too_many_tries?
tries > 0 && tries % Lock.max_tries == 0
end
def self.increase_tries(user)
find_or_create_by!(user: user).increment!(:tries).save!
end
def self.max_tries
5
end
end