class Securetrading::BaseModel
Attributes
attributes_hash[R]
Public Class Methods
new(attrs_hash = {})
click to toggle source
# File lib/securetrading/base_model.rb, line 5 def initialize(attrs_hash = {}) @attributes_hash = attrs_hash.presence && attrs_hash.transform_keys! { |k| k.to_s.tr('__', '') } end
Public Instance Methods
ox_xml()
click to toggle source
# File lib/securetrading/base_model.rb, line 10 def ox_xml ox = ox_from_values sub_classes.each do |sub_class_name| next unless attributes_hash.key?(sub_class_name) ox << send(sub_class_name).ox_xml end ox end
Private Instance Methods
determine_value(name)
click to toggle source
# File lib/securetrading/base_model.rb, line 36 def determine_value(name) if name == 'error' Securetrading::ResponseError.new(attributes_hash[name]) elsif name.in?(sub_classes) "Securetrading::#{name.capitalize}".constantize .public_send(:new, attributes_hash[name]) else attributes_hash[name] end end
method_missing(m, *args, &block)
click to toggle source
Calls superclass method
# File lib/securetrading/base_model.rb, line 31 def method_missing(m, *args, &block) return super unless attributes_hash.key?(m.to_s) determine_value(m.to_s) end
ox_from_values()
click to toggle source
# File lib/securetrading/base_model.rb, line 21 def ox_from_values XmlDoc .elements(xml_tag_name => @attributes_hash.except(*sub_classes)) .first end
sub_classes()
click to toggle source
# File lib/securetrading/base_model.rb, line 47 def sub_classes [] end
xml_tag_name()
click to toggle source
# File lib/securetrading/base_model.rb, line 27 def xml_tag_name self.class.name.demodulize.downcase end