module Neo4j::ActiveNode::IdProperty::TypeMethods
Public Instance Methods
define_id_methods(clazz, name, conf)
click to toggle source
# File lib/neo4j/active_node/id_property.rb 40 def define_id_methods(clazz, name, conf) 41 validate_conf!(conf) 42 43 if conf[:on] 44 define_custom_method(clazz, name, conf[:on]) 45 elsif conf[:auto] 46 define_uuid_method(clazz, name) 47 elsif conf.empty? 48 define_property_method(clazz, name) 49 end 50 end
Private Instance Methods
clear_methods(clazz, name)
click to toggle source
# File lib/neo4j/active_node/id_property.rb 115 def clear_methods(clazz, name) 116 clazz.module_eval(%(undef_method :#{name}), __FILE__, __LINE__) if clazz.method_defined?(name) 117 clazz.module_eval(%(undef_property :#{name}), __FILE__, __LINE__) if clazz.attribute_names.include?(name.to_s) 118 end
define_custom_method(clazz, name, on)
click to toggle source
# File lib/neo4j/active_node/id_property.rb 98 def define_custom_method(clazz, name, on) 99 clear_methods(clazz, name) 100 101 clazz.module_eval(%{ 102 default_property :#{name} do |instance| 103 raise "Specifying custom id_property #{name} on non-existent method #{on}" unless instance.respond_to?(:#{on}) 104 instance.#{on} 105 end 106 107 def #{name} 108 default_property_value 109 end 110 111 alias_method :id, :#{name} 112 }, __FILE__, __LINE__) 113 end
define_property_method(clazz, name)
click to toggle source
# File lib/neo4j/active_node/id_property.rb 69 def define_property_method(clazz, name) 70 clear_methods(clazz, name) 71 72 clazz.module_eval(%( 73 def id 74 _persisted_obj ? #{name.to_sym == :id ? 'attribute(\'id\')' : name} : nil 75 end 76 77 property :#{name} 78 ), __FILE__, __LINE__) 79 end
define_uuid_method(clazz, name)
click to toggle source
# File lib/neo4j/active_node/id_property.rb 82 def define_uuid_method(clazz, name) 83 clear_methods(clazz, name) 84 85 clazz.module_eval(%( 86 default_property :#{name} do 87 ::SecureRandom.uuid 88 end 89 90 def #{name} 91 default_property_value 92 end 93 94 alias_method :id, :#{name} 95 ), __FILE__, __LINE__) 96 end
validate_conf!(conf)
click to toggle source
# File lib/neo4j/active_node/id_property.rb 54 def validate_conf!(conf) 55 fail "Expected a Hash, got #{conf.class} (#{conf}) for id_property" if !conf.is_a?(Hash) 56 57 return if conf[:on] 58 59 if conf[:auto] 60 fail "only :uuid auto id_property allowed, got #{conf[:auto]}" if conf[:auto] != :uuid 61 return 62 end 63 64 return if conf.empty? 65 66 fail "Illegal value #{conf.inspect} for id_property, expected :on or :auto" 67 end