module ActsAsPriceableOn::ActiveRecord::Priceable::ClassMethods

Public Instance Methods

acts_as_priceable() click to toggle source
# File lib/acts_as_priceable_on/active_record/priceable.rb, line 10
def acts_as_priceable
  acts_as_priceable_on :prices
end
acts_as_priceable_on(*types, options) click to toggle source
# File lib/acts_as_priceable_on/active_record/priceable.rb, line 14
def acts_as_priceable_on(*types, options)
  types << options unless options.is_a? Hash

  types.each do |type|
    name = type.to_s.singularize.titleize # :charges => 'Charge'

    #if constant doesn't already exist, create it as subclass of Price
    unless ActsAsPriceableOn.const_defined?(name)
      ActsAsPriceableOn.const_set name, Class.new(Price)
    end

    has_many type, as: :priceable, class_name: "ActsAsPriceableOn::#{name}"
  end
end