Module: ManaPotion::Pool::ClassMethods

Defined in:
lib/mana-potion/pool.rb

Instance Method Summary collapse

Instance Method Details

#mana_pool_for(association, limit: 1, period: 1.day) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
# File 'lib/mana-potion/pool.rb', line 10

def mana_pool_for(association, limit: 1, period: 1.day)
  before_validation do
    limit = instance_exec &limit if limit.respond_to?(:call)
    period = instance_exec &period if period.respond_to?(:call)

    check_usage = ManaPotion::CheckUsage.new(self, send(association), limit, period)
    if check_usage.exceeded?
      errors.add(association, :limit, limit: limit, count: check_usage.count)
    end
  end
end