Module: Freemium::CouponRedemption

Included in:
CouponRedemption
Defined in:
lib/freemium/coupon_redemption.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/freemium/coupon_redemption.rb', line 4

def self.included(base)
  base.class_eval do
    belongs_to :subscription, :class_name => "Subscription"
    belongs_to :coupon, :class_name => "Coupon"

    before_create :set_redeemed_on

    validates_presence_of :coupon
    validates_presence_of :subscription
    validates_uniqueness_of :coupon_id, :scope => :subscription_id, :message => "has already been applied"
    validate :custom_validation, :on => :create
  end
end

Instance Method Details

#active?(date = Date.today) ⇒ Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/freemium/coupon_redemption.rb', line 22

def active?(date = Date.today)
  expires_on ? date <= self.expires_on : true
end

#expire!Object



18
19
20
# File 'lib/freemium/coupon_redemption.rb', line 18

def expire!
  self.update_attribute :expired_on, Date.today
end

#expires_onObject



26
27
28
29
# File 'lib/freemium/coupon_redemption.rb', line 26

def expires_on
  return nil unless self.coupon.duration_in_months
  self.redeemed_on + self.coupon.duration_in_months.months
end

#redeemed_onObject



31
32
33
# File 'lib/freemium/coupon_redemption.rb', line 31

def redeemed_on
  self['redeemed_on'] || Date.today
end