24 lines
529 B
Ruby
24 lines
529 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
class PlanLimits < ApplicationRecord
|
||
|
belongs_to :plan
|
||
|
|
||
|
def exceeded?(limit_name, object)
|
||
|
return false unless enabled?(limit_name)
|
||
|
|
||
|
if object.is_a?(Integer)
|
||
|
object >= read_attribute(limit_name)
|
||
|
else
|
||
|
# object.count >= limit value is slower than checking
|
||
|
# if a record exists at the limit value - 1 position.
|
||
|
object.offset(read_attribute(limit_name) - 1).exists?
|
||
|
end
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def enabled?(limit_name)
|
||
|
read_attribute(limit_name) > 0
|
||
|
end
|
||
|
end
|