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