Module: PromisePay::Lib::DynamicAccessors

Included in:
Callback, Fee, Item, ItemStatus, User
Defined in:
lib/promise_pay/lib/dynamic_accessors.rb

Instance Method Summary collapse

Instance Method Details

#accessor_defined?(attribute) ⇒ Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/promise_pay/lib/dynamic_accessors.rb', line 23

def accessor_defined?(attribute)
  respond_to?(attribute) && respond_to?("#{attribute}=")
end

#assign_instance_variables(result) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/promise_pay/lib/dynamic_accessors.rb', line 4

def assign_instance_variables(result)
  return if result.empty?

  result.each do |attribute, value|
    if value.is_a?(Hash)
      value.each { |att, val| initialize_property(att, val) }
    else
      initialize_property(attribute, value)
    end
  end
  self
end

#define_accessor(attribute, value, object) ⇒ Object



32
33
34
35
36
37
38
39
# File 'lib/promise_pay/lib/dynamic_accessors.rb', line 32

def define_accessor(attribute, value, object)
  klass = object.class
  if attribute.to_s.end_with? "_at"
    define_date_based_accessors(attribute, value, klass)
  else
    define_standard_accessors(attribute, value, klass)
  end
end

#initialize_property(attribute, value) ⇒ Object



17
18
19
20
21
# File 'lib/promise_pay/lib/dynamic_accessors.rb', line 17

def initialize_property(attribute, value)
  attribute = attribute.gsub(/s$/, '_id') if ["buyers","sellers"].include? attribute
  define_accessor(attribute, value, self) unless accessor_defined?(attribute)
  set_property(attribute, value)
end

#set_property(attribute, value) ⇒ Object



27
28
29
30
# File 'lib/promise_pay/lib/dynamic_accessors.rb', line 27

def set_property(attribute, value)
  setter_method = "#{attribute}="
  self.send(setter_method, value)
end