module SimpleObjects::Attributes
Public Class Methods
included(base)
click to toggle source
# File lib/simple_objects/attributes.rb, line 8 def self.included(base) base.extend(ClassMethods) end
Protected Instance Methods
attributes()
click to toggle source
# File lib/simple_objects/attributes.rb, line 47 def attributes self.class.attributes end
mass_assign(inputs)
click to toggle source
# File lib/simple_objects/attributes.rb, line 33 def mass_assign(inputs) attributes.each do |(name, attr)| value = inputs[name] if value mismatch(attr, value) if (type = attr.type) && !(value.is_a? type) set_value(name, value) next end missing(name) if attr.required set_value(name, attr.default) if attr.default end end
mismatch(attribute, value)
click to toggle source
# File lib/simple_objects/attributes.rb, line 59 def mismatch(attribute, value) raise MismatchedTypeError.new("Expected #{attribute.name} to be #{attribute.type} but was #{value.class}") end
missing(name)
click to toggle source
# File lib/simple_objects/attributes.rb, line 55 def missing(name) raise RequiredMissingError.new("Missing required value for #{name}") end
set_value(name, value)
click to toggle source
# File lib/simple_objects/attributes.rb, line 51 def set_value(name, value) instance_variable_set("@#{name}", value) end