Module: ReservationRequestLocker
- Defined in:
- app/my_lib/reservation_request_locker.rb
Overview
typed: ignore
Instance Method Summary collapse
- #clear_request_lock(reservation) ⇒ Object
-
#duplicate_request?(reservation) ⇒ Boolean
check if the request is duplicate might be caused by user's multiple clicks.
-
#lock_request(reservation) ⇒ Object
track booking request to redis to prevent duplicate booking requests that might be caused by user's multiple clicks.
Instance Method Details
#clear_request_lock(reservation) ⇒ Object
9 10 11 12 13 |
# File 'app/my_lib/reservation_request_locker.rb', line 9 def clear_request_lock(reservation) return if reservation.blank? Rails.cache.delete(_request_cache_key(reservation)) end |
#duplicate_request?(reservation) ⇒ Boolean
check if the request is duplicate might be caused by user's multiple clicks
17 18 19 20 21 |
# File 'app/my_lib/reservation_request_locker.rb', line 17 def duplicate_request?(reservation) # Rails.cache.exist? return 0 if key not found, otherwise return 1 result = Rails.cache.exist?(_request_cache_key(reservation)) result == 1 end |
#lock_request(reservation) ⇒ Object
track booking request to redis to prevent duplicate booking requests that might be caused by user's multiple clicks
5 6 7 |
# File 'app/my_lib/reservation_request_locker.rb', line 5 def lock_request(reservation) Rails.cache.write(_request_cache_key(reservation), reservation.id.to_s, expires_in: 1.minute) end |