class Ravelin::RavelinObject
Attributes
attr_accessor_names[R]
Public Class Methods
attr_accessor(*names)
click to toggle source
Calls superclass method
# 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)
click to toggle source
# File lib/ravelin/ravelin_object.rb, line 10 def attr_required(*names) @required_attributes = *names end
new(args)
click to toggle source
# 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
required_attributes()
click to toggle source
# File lib/ravelin/ravelin_object.rb, line 6 def required_attributes @required_attributes ||= [] end
Public Instance Methods
serializable_hash()
click to toggle source
# 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()
click to toggle source
# 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