module MadCart::Model::Base
Public Class Methods
included(base)
click to toggle source
# File lib/mad_cart/model/base.rb, line 10 def self.included(base) base.extend ClassMethods base.class_eval do include AttributeMapper include InheritableAttributes attr_accessor :additional_attributes inheritable_attributes :required_attrs attr_accessor(*exposed_attributes) end end
new(args={})
click to toggle source
# File lib/mad_cart/model/base.rb, line 4 def initialize(args={}) self.additional_attributes = {} check_required_attributes(args) args.each { |k,v| set_attribute(k, v) } end
Public Instance Methods
define_attribute_accessors()
click to toggle source
# File lib/mad_cart/model/base.rb, line 21 def define_attribute_accessors klass.class_eval do attr_accessor(*exposed_attributes) end end
Private Instance Methods
check_required_attributes(args)
click to toggle source
# File lib/mad_cart/model/base.rb, line 27 def check_required_attributes(args) return unless klass.required_attrs keys = args.keys.map{|a| a.to_s } klass.required_attrs.each do |attr| raise(ArgumentError, "missing argument: #{attr}") if !keys.include?(attr) end end
klass()
click to toggle source
# File lib/mad_cart/model/base.rb, line 49 def klass self.class end
set_attribute(key, value)
click to toggle source
# File lib/mad_cart/model/base.rb, line 37 def set_attribute(key, value) attr_name = klass.map_attribute_name(key) if klass.exposed_attributes.include? attr_name.to_s define_attribute_accessors unless self.respond_to?(attr_name) self.send("#{attr_name}=", value) unless value.nil? else self.additional_attributes[attr_name.to_s] = value unless value.nil? end end