Sha256: fdac879dd6f9d43f6a514d27426211e8597778bf197c3618b04f3d8c3a2d7744
Contents?: true
Size: 1.67 KB
Versions: 2
Compression:
Stored size: 1.67 KB
Contents
module ActiveRecord module Extensions def self.included(base) base.extend(ClassMethods) end module ClassMethods # Assign a :currency (Money::Currency object) reader/writer for the given # field name. # # NOTES: # * Currency is identified by a 3-letter ISO code, # * Lookup is doen via Money::Currency.find(iso_code) def has_currency(*args) options = args.extract_options! attr_name = args.first || :currency field_name = "#{attr_name}_iso_code" composed_of attr_name, :class_name => "Money::Currency", :mapping => [field_name, 'iso_code'], :allow_nil => true, :constructor => Proc.new{|value| Money::Currency.new(value) unless value.blank?} if Rails.version > '3' scope :for_currency, lambda{ |currency| where(:currency_iso_code => currency.iso_code) } else named_scope :for_currency, lambda{ |currency| {:conditions => {:currency_iso_code => currency.iso_code}} } end if options[:default] before_validation :set_default_currency class_eval <<-METHOD def set_default_currency self.currency ||= EnabledCurrency.base_currency true end METHOD end if options[:required] validates_presence_of :currency_iso_code end end end end end ::ActiveRecord::Base.send(:include, MoneyField) ::ActiveRecord::Base.send(:include, ActiveRecord::Extensions)
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
money_extensions-0.1.0 | lib/money_extensions/active_record/extensions.rb |
money_extensions-0.0.2 | lib/money_extensions/active_record/extensions.rb |