Sha256: 413577ea1c0a1780a93fd6dcd6e51d09fc4be78b97c55f89e305bbcad89f0c8d
Contents?: true
Size: 1.35 KB
Versions: 1
Compression:
Stored size: 1.35 KB
Contents
module Piggybak class PaymentMethod < ActiveRecord::Base has_many :payment_method_values, :dependent => :destroy alias :metadata :payment_method_values accepts_nested_attributes_for :payment_method_values, :allow_destroy => true validates :klass, presence: true validates :description, presence: true def klass_enum Piggybak.config.payment_calculators end validates_each :payment_method_values do |record, attr, value| if record.klass.present? payment_method = record.klass.constantize metadata_keys = value.collect { |v| v.key }.sort if payment_method::KEYS.sort != metadata_keys if payment_method::KEYS.empty? record.errors.add attr, "You don't need any metadata for this method." else record.errors.add attr, "You must define key values for #{payment_method::KEYS.join(', ')} for this payment method." end end end end validates_each :active do |record, attr, value| if value && PaymentMethod.find_all_by_active(true).select { |p| p != record }.size > 0 record.errors.add attr, "You may only have one active payment method." end end def key_values self.metadata.inject({}) { |h, k| h[k.key.to_sym] = k.value; h } end def admin_label "#{self.description}" end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
piggybak-0.7.0 | app/models/piggybak/payment_method.rb |