Sha256: bbe2e7183c7bd244cd7b5794819148706eb93821292707aa2532565389756916
Contents?: true
Size: 1.06 KB
Versions: 2
Compression:
Stored size: 1.06 KB
Contents
module Dolly module PropertyManager def build_property(attributes) assign_identity_properties(attributes) lambda do |property| name = property.key.to_sym next unless doc[name].nil? write_attribute(name, attributes[name]) end end def update_attribute lambda do |key, value| raise InvalidProperty unless valid_property?(key) write_attribute(key, value) end end def write_attribute key, value value = set_property_value(key, value) instance_variable_set(:"@#{key}", value) update_doc(key, value) unless value.nil? end def valid_property?(name) properties.include? name end def update_doc(key, value) doc[key] = value end def properties self.class.properties end def set_property_value(key, value) properties[key].cast_value(value) end def assign_identity_properties(opts = {}) id_presence = opts[:id] || opts[:_id] || opts['id'] || opts['_id'] self.id = id_presence if id_presence end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dolly-3.0.1 | lib/dolly/property_manager.rb |
dolly-3.0.0 | lib/dolly/property_manager.rb |