module Hashme::Properties::ClassMethods
Public Instance Methods
property(*args)
click to toggle source
# File lib/hashme/properties.rb, line 57 def property(*args) # Prepare the property object and methods property = Property.new(*args) self.properties = properties.merge(property.name => property) define_property_methods(property) prepare_validation(property) property end
Protected Instance Methods
define_property_methods(property)
click to toggle source
# File lib/hashme/properties.rb, line 68 def define_property_methods(property) # Getter define_method(property.name) do get_attribute(property.name) || property.default end # Setter define_method "#{property.name}=" do |value| set_attribute(property.name, value) end end
prepare_validation(property)
click to toggle source
# File lib/hashme/properties.rb, line 79 def prepare_validation(property) if property.type.method_defined?(:valid?) validates_casted_attributes property.name end end