Class: Ravelin::RavelinObject
- Inherits:
-
Object
- Object
- Ravelin::RavelinObject
show all
- Defined in:
- lib/ravelin/ravelin_object.rb
Direct Known Subclasses
Chargeback, Customer, Device, Item, Label, Location, Order, PaymentMethod, PreTransaction, ThreeDSecure, Transaction, Voucher, VoucherRedemption
Class Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
21
22
23
24
25
26
27
|
# File 'lib/ravelin/ravelin_object.rb', line 21
def initialize(args)
args.each do |key, value|
self.send("#{key}=", Ravelin.convert_ids_to_strings(key, value))
end
validate
end
|
Class Attribute Details
.attr_accessor_names ⇒ Object
Returns the value of attribute attr_accessor_names.
4
5
6
|
# File 'lib/ravelin/ravelin_object.rb', line 4
def attr_accessor_names
@attr_accessor_names
end
|
Class Method Details
.attr_accessor(*names) ⇒ Object
14
15
16
17
18
|
# File 'lib/ravelin/ravelin_object.rb', line 14
def attr_accessor(*names)
@attr_accessor_names ||= []
@attr_accessor_names.concat(names)
super
end
|
.attr_required(*names) ⇒ Object
10
11
12
|
# File 'lib/ravelin/ravelin_object.rb', line 10
def attr_required(*names)
@required_attributes = *names
end
|
.required_attributes ⇒ Object
6
7
8
|
# File 'lib/ravelin/ravelin_object.rb', line 6
def required_attributes
@required_attributes ||= []
end
|
Instance Method Details
#serializable_hash ⇒ Object
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/ravelin/ravelin_object.rb', line 39
def serializable_hash
self.class.attr_accessor_names.each_with_object({}) do |key, hash|
value = self.send(key)
key = Ravelin.camelize(key)
if value.is_a?(RavelinObject)
hash[key] = value.serializable_hash
elsif value.is_a?(Array)
hash[key] = value.map(&:serializable_hash)
elsif value.is_a?(Time) || value.is_a?(Date) || value.is_a?(DateTime)
hash[key] = Ravelin.datetime_to_epoch(value)
elsif !value.nil?
hash[key] = value
end
end
end
|
#validate ⇒ Object
29
30
31
32
33
34
35
36
37
|
# File 'lib/ravelin/ravelin_object.rb', line 29
def validate
missing = self.class.required_attributes.select do |name|
self.send(name).nil? || self.send(name) == ''
end
if missing.any?
raise ArgumentError.new(%Q{missing parameters: #{missing.join(', ')}})
end
end
|