Sha256: 38bce8f18e321a938e7b1cd9a9165682e4b2d396721385217ac05e4f96458c7f
Contents?: true
Size: 2 KB
Versions: 2
Compression:
Stored size: 2 KB
Contents
class Membership < ActiveRecord::Base include Itemable belongs_to :organization belongs_to :member belongs_to :membership_type has_many :items, :as => :product # Same callbacks that fire before Rails' built-in counter_cache #Except before_destroy is replaced with after_destroy after_create :update_member_counters after_destroy :update_member_counters after_update :update_member_counters # # Make sure you're scoping when you use these. # organization.memberships.lapsed # scope :current, lambda { |time = Time.now| where("ends_at > ?", time) } scope :lapsed, lambda { |time = Time.now, since = (time - 1.year)| where("ends_at < ?", time).where("ends_at > ?", since.midnight) } scope :past, lambda { |time = Time.now| where("ends_at < ?", time - 1.year) } def self.for(membership_type) new.tap do |membership| membership.membership_type = membership_type membership.organization = membership_type.organization membership.price = membership_type.price membership.starts_at = membership_type.starts_at membership.ends_at = membership_type.ends_at end end def update_member_counters self.member.try(:count_memberships) end # TODO: DJ this. Could be thousands of people. def self.for_award(membership_award) membership_award.people.each do |people| membership = Membership.for(membership_award.membership_type) membership.ends_at = membership_award.ends_at membership.sold_price = membership_award.sold_price # create order # Member.for(membership) end end def adjust_expiration_to(new_ends_at) self.ends_at = new_ends_at self.save end def item items.first end def cart_price price end def self.realized_fee 0 end def refundable? false end def exchangeable? false end def returnable? false end def order_summary_description self.membership_type.name end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
artfully_ose-1.2.0.pre.16 | app/models/membership.rb |
artfully_ose-1.2.0.pre.15 | app/models/membership.rb |