neo4j 5.2.15 → 6.0.0.alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +17 -19
  3. data/Gemfile +1 -1
  4. data/lib/neo4j.rb +4 -1
  5. data/lib/neo4j/active_node.rb +6 -15
  6. data/lib/neo4j/active_node/has_n.rb +52 -21
  7. data/lib/neo4j/active_node/has_n/association.rb +1 -1
  8. data/lib/neo4j/active_node/id_property.rb +1 -1
  9. data/lib/neo4j/active_node/id_property/accessor.rb +1 -1
  10. data/lib/neo4j/active_node/labels.rb +7 -101
  11. data/lib/neo4j/active_node/labels/index.rb +87 -0
  12. data/lib/neo4j/active_node/persistence.rb +3 -2
  13. data/lib/neo4j/active_node/query.rb +1 -1
  14. data/lib/neo4j/active_node/query/query_proxy.rb +7 -9
  15. data/lib/neo4j/active_node/query/query_proxy_eager_loading.rb +0 -1
  16. data/lib/neo4j/active_node/query/query_proxy_link.rb +12 -4
  17. data/lib/neo4j/active_node/query/query_proxy_methods.rb +4 -6
  18. data/lib/neo4j/active_node/query/query_proxy_unpersisted.rb +4 -8
  19. data/lib/neo4j/active_node/unpersisted.rb +12 -10
  20. data/lib/neo4j/active_node/validations.rb +2 -2
  21. data/lib/neo4j/active_rel.rb +7 -4
  22. data/lib/neo4j/active_rel/persistence.rb +13 -4
  23. data/lib/neo4j/active_rel/query.rb +8 -0
  24. data/lib/neo4j/active_rel/related_node.rb +1 -27
  25. data/lib/neo4j/errors.rb +2 -0
  26. data/lib/neo4j/schema/operation.rb +91 -0
  27. data/lib/neo4j/shared.rb +3 -3
  28. data/lib/neo4j/shared/callbacks.rb +2 -7
  29. data/lib/neo4j/shared/{declared_property_manager.rb → declared_properties.rb} +34 -2
  30. data/lib/neo4j/shared/declared_property.rb +19 -0
  31. data/lib/neo4j/shared/declared_property/index.rb +37 -0
  32. data/lib/neo4j/shared/initialize.rb +2 -2
  33. data/lib/neo4j/shared/persistence.rb +3 -25
  34. data/lib/neo4j/shared/property.rb +24 -10
  35. data/lib/neo4j/shared/type_converters.rb +131 -6
  36. data/lib/neo4j/tasks/migration.rake +3 -3
  37. data/lib/neo4j/type_converters.rb +1 -1
  38. data/lib/neo4j/version.rb +1 -1
  39. data/neo4j.gemspec +2 -2
  40. metadata +13 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 38cd85964af293a07fd75a42606a47264cd51690
4
- data.tar.gz: a27b352ae9e88488999eb092b3770c2178128e5f
3
+ metadata.gz: cb4da367af9c6c6253c1d7f744ea39807a8c15b7
4
+ data.tar.gz: 17b6b00c6b522b83aa27ca9ba1780542a15ae8bc
5
5
  SHA512:
6
- metadata.gz: 7e473d4a8e2073ea4ff6431367ae091b2edfe1efdd0ce10732fefc81d89fb8dbb214b4e90595acc5e76cb347a61f61a329db039e17e7cb8913ed7af30c36be57
7
- data.tar.gz: 16b1783907ac3e73ef5fd9f0dadae744c38da72906e6c49d15d5cc3e6439633298e0ff33e0b5e9a7d0b237e0e5e9e31a0d0715c30ad39c52e62ddb4f66093191
6
+ metadata.gz: 97d79f821bf11cb74a5b53a964a5796c74a266775a2cebc6669bfa104f727dddf654fca104cc2c1dcd3cf9eb6f6e2babb8f0a625144bf360383f5343f6f6c76f
7
+ data.tar.gz: f2c614f9b21c87942f0f50ae0bf0131edc3a6a41023d551594d1cb8e0cf7f7dca7480d2ca8fdd4e6da9f4a1333b9e376a547572b87ae9d4e8e81736dd8e1a769
data/CHANGELOG.md CHANGED
@@ -3,32 +3,30 @@ All notable changes to this project will be documented in this file.
3
3
  This file should follow the standards specified on [http://keepachangelog.com/]
4
4
  This project adheres to [Semantic Versioning](http://semver.org/).
5
5
 
6
- ## [5.2.15] - 10-27-2015
6
+ ## [6.0.0.alpha.1] - 10-12-2015
7
7
 
8
- ### Fixed
9
-
10
- - `#with_associations` should use multiple `OPTIONAL MATCH` clauses instead of one so that matches are independent (behavior changed in Neo4j 2.3.0)
11
-
12
- ## [5.2.13] - 10-26-2015
13
-
14
- ### Fixed
15
- - Fixed `#after_initialize` and `#after_find` callbacks.
16
- - The `#touch` method should to raise errors when unsuccessful and avoid `#attributes` for performance.
8
+ ### Changed
17
9
 
18
- ## [5.2.12] - 10-25-2015
10
+ - Refactoring around indexing and constraints in `Neo4j::ActiveNode`. The public interfaces are unchanged.
11
+ - `Neo4j::Shared::DeclaredPropertyManager` was renamed `Neo4j::Shared::DeclaredProperties`. All methods referencing the old name were updated to reflect this.
12
+ - Methods that were using `Neo4j::Session#on_session_available` were updated to reflect the upstream change to `on_next_session_available`.
13
+ - `rel_where` will now use ActiveRel classes for type conversion, when possible.
14
+ - Converters will look for a `converted?` method to determine whether an object is of the appropriate type for the database. This allows converters to be responsible for multiple types, if required.
15
+ - Removed the ability to set both an exact index and unique constraint on the same property in a model. Unique constraints also provide exact indexes.
16
+ - Deprecated all methods in ActiveRel's Query module except for those that allow finding by id.
17
+ - Return `true` on successful `#save!` calls (Thanks to jmdeldin)
19
18
 
20
- ### Fixed
21
- - Fix the `#touch` method for `ActiveNode` and `ActiveRel`
19
+ ### Added
22
20
 
23
- ## [5.2.11] - 10-18-2015
21
+ - New classes for schema operations, predictably called `Neo4j::Schema::Operation` and subclasses `UniqueConstraintOperation` and `ExactIndexOperation`. These provide methods to aid in the additional, removal, and presence checking of indexes and constraints.
22
+ - A few methods were added to `Neo4j::Shared::DeclaredProperties` to make it easier to work with. In particular, `[key]` acts as a shortcut for `DeclaredProperties#registered_properties`.
23
+ - Type Converters were added for String, Integer, Fixnum, BigDecimal, and Boolean to provide type conversion for these objects in QueryProxy.
24
+ - Support for Array arguments to ActiveRel's `from_class` and `to_class`.
24
25
 
25
26
  ### Fixed
26
- - Unable to give additional options as first argument to chained QueryProxy method
27
27
 
28
- ## [5.2.10] - 10-14-2015
29
-
30
- ### Fixed
31
- - `has_one` does not define `_id` methods if they are already defined. Also use `method_defined?` instead of `respond_to?` since it is at the class level
28
+ - Certain actions that were intended as once-in-the-app's-lifetime events, notably schema operations, will only occur immediately upon the first session's establishment.
29
+ - Context now set for Model.all QueryProxy so that logs can reflect that it wasn't just a raw Cypher query
32
30
 
33
31
  ## [5.2.9] - 09-30-2015
34
32
 
data/Gemfile CHANGED
@@ -2,7 +2,7 @@ source 'http://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
- # gem 'neo4j-core', github: 'neo4jrb/neo4j-core', branch: '5.1.x'
5
+ gem 'neo4j-core', github: 'neo4jrb/neo4j-core', branch: 'master'
6
6
  # gem 'neo4j-core', path: '../neo4j-core'
7
7
 
8
8
  # gem 'active_attr', github: 'neo4jrb/active_attr', branch: 'performance'
data/lib/neo4j.rb CHANGED
@@ -25,12 +25,14 @@ require 'neo4j/shared/type_converters'
25
25
  require 'neo4j/shared/rel_type_converters'
26
26
  require 'neo4j/type_converters'
27
27
  require 'neo4j/paginated'
28
+ require 'neo4j/schema/operation'
28
29
 
29
30
  require 'neo4j/timestamps'
30
31
 
31
32
  require 'neo4j/shared/callbacks'
33
+ require 'neo4j/shared/declared_property/index'
32
34
  require 'neo4j/shared/declared_property'
33
- require 'neo4j/shared/declared_property_manager'
35
+ require 'neo4j/shared/declared_properties'
34
36
  require 'neo4j/shared/property'
35
37
  require 'neo4j/shared/persistence'
36
38
  require 'neo4j/shared/validations'
@@ -60,6 +62,7 @@ require 'neo4j/active_node/query/query_proxy_enumerable'
60
62
  require 'neo4j/active_node/query/query_proxy_find_in_batches'
61
63
  require 'neo4j/active_node/query/query_proxy_eager_loading'
62
64
  require 'neo4j/active_node/query/query_proxy_link'
65
+ require 'neo4j/active_node/labels/index'
63
66
  require 'neo4j/active_node/labels/reloading'
64
67
  require 'neo4j/active_node/labels'
65
68
  require 'neo4j/active_node/id_property/accessor'
@@ -59,25 +59,16 @@ module Neo4j
59
59
 
60
60
  def self.inherited(other)
61
61
  inherit_id_property(other)
62
- inherited_indexes(other) if self.respond_to?(:indexed_properties)
63
- attributes.each_pair { |k, v| other.attributes[k] = v }
64
- inherit_serialized_properties(other) if self.respond_to?(:serialized_properties)
65
- Neo4j::ActiveNode::Labels.add_wrapped_class(other)
62
+ attributes.each_pair do |k, v|
63
+ other.inherit_property k.to_sym, v.clone, declared_properties[k].options
64
+ end
66
65
 
66
+ Neo4j::ActiveNode::Labels.add_wrapped_class(other)
67
67
  super
68
68
  end
69
69
 
70
- def self.inherited_indexes(other)
71
- return if indexed_properties.nil?
72
- self.indexed_properties.each { |property| other.index property }
73
- end
74
-
75
- def self.inherit_serialized_properties(other)
76
- other.serialized_properties = self.serialized_properties
77
- end
78
-
79
70
  def self.inherit_id_property(other)
80
- Neo4j::Session.on_session_available do |_|
71
+ Neo4j::Session.on_next_session_available do |_|
81
72
  next if other.manual_id_property? || !self.id_property?
82
73
  id_prop = self.id_property_info
83
74
  conf = id_prop[:type].empty? ? {auto: :uuid} : id_prop[:type]
@@ -85,7 +76,7 @@ module Neo4j
85
76
  end
86
77
  end
87
78
 
88
- Neo4j::Session.on_session_available do |_|
79
+ Neo4j::Session.on_next_session_available do |_|
89
80
  next if manual_id_property?
90
81
  id_property :uuid, auto: :uuid unless self.id_property?
91
82
 
@@ -22,7 +22,7 @@ module Neo4j::ActiveNode
22
22
  # Default
23
23
  def inspect
24
24
  if @cached_result
25
- @cached_result.inspect
25
+ result_nodes.inspect
26
26
  else
27
27
  "#<AssociationProxy @query_proxy=#{@query_proxy.inspect}>"
28
28
  end
@@ -36,7 +36,15 @@ module Neo4j::ActiveNode
36
36
  include Enumerable
37
37
 
38
38
  def each(&block)
39
- result.each(&block)
39
+ result_nodes.each(&block)
40
+ end
41
+
42
+ def ==(other)
43
+ self.to_a == other.to_a
44
+ end
45
+
46
+ def +(other)
47
+ self.to_a + other
40
48
  end
41
49
 
42
50
  def result
@@ -47,11 +55,30 @@ module Neo4j::ActiveNode
47
55
  @cached_result
48
56
  end
49
57
 
58
+ def result_nodes
59
+ return result if !@query_proxy.model
60
+
61
+ @cached_result = result.map do |object|
62
+ object.is_a?(Neo4j::ActiveNode) ? object : @query_proxy.model.find(object)
63
+ end
64
+ end
65
+
66
+ def result_ids
67
+ result.map do |object|
68
+ object.is_a?(Neo4j::ActiveNode) ? object.id : object
69
+ end
70
+ end
71
+
50
72
  def cache_result(result)
51
73
  @cached_result = result
52
74
  @enumerable = (@cached_result || @query_proxy)
53
75
  end
54
76
 
77
+ def add_to_cache(object)
78
+ @cached_result ||= []
79
+ @cached_result << object
80
+ end
81
+
55
82
  def cache_query_proxy_result
56
83
  @query_proxy.to_a.tap do |result|
57
84
  cache_result(result)
@@ -74,7 +101,7 @@ module Neo4j::ActiveNode
74
101
  super if target.nil?
75
102
 
76
103
  cache_query_proxy_result if !cached? && !target.is_a?(Neo4j::ActiveNode::Query::QueryProxy)
77
- clear_cache_result if target.is_a?(Neo4j::ActiveNode::Query::QueryProxy)
104
+ clear_cache_result if !QUERY_PROXY_METHODS.include?(method_name) && target.is_a?(Neo4j::ActiveNode::Query::QueryProxy)
78
105
 
79
106
  target.public_send(method_name, *args, &block)
80
107
  end
@@ -123,9 +150,13 @@ module Neo4j::ActiveNode
123
150
  self.class.send(:association_query_proxy, name, {start_object: self}.merge!(options))
124
151
  end
125
152
 
153
+ def association_proxy_hash(name, options = {})
154
+ [name.to_sym, options.values_at(:node, :rel, :labels, :rel_length)].hash
155
+ end
156
+
126
157
  def association_proxy(name, options = {})
127
158
  name = name.to_sym
128
- hash = [name, options.values_at(:node, :rel, :labels, :rel_length)].hash
159
+ hash = association_proxy_hash(name, options)
129
160
  association_proxy_cache_fetch(hash) do
130
161
  if result_cache = self.instance_variable_get('@source_query_proxy_result_cache')
131
162
  result_by_previous_id = previous_proxy_results_by_previous_id(result_cache, name)
@@ -301,7 +332,10 @@ module Neo4j::ActiveNode
301
332
  define_method(name) do |node = nil, rel = nil, options = {}|
302
333
  # return [].freeze unless self._persisted_obj
303
334
 
304
- options, node = node, nil if node.is_a?(Hash)
335
+ if node.is_a?(Hash)
336
+ options = node
337
+ node = nil
338
+ end
305
339
 
306
340
  association_proxy(name, {node: node, rel: rel, source_object: self, labels: options[:labels]}.merge!(options))
307
341
  end
@@ -311,8 +345,6 @@ module Neo4j::ActiveNode
311
345
  define_has_many_id_methods(name)
312
346
 
313
347
  define_class_method(name) do |node = nil, rel = nil, options = {}|
314
- options, node = node, nil if node.is_a?(Hash)
315
-
316
348
  association_proxy(name, {node: node, rel: rel, labels: options[:labels]}.merge!(options))
317
349
  end
318
350
  end
@@ -327,7 +359,7 @@ module Neo4j::ActiveNode
327
359
 
328
360
  def define_has_many_id_methods(name)
329
361
  define_method_unless_defined("#{name.to_s.singularize}_ids") do
330
- association_proxy(name).pluck(:uuid)
362
+ association_proxy(name).result_ids
331
363
  end
332
364
 
333
365
  define_method_unless_defined("#{name.to_s.singularize}_ids=") do |ids|
@@ -340,7 +372,7 @@ module Neo4j::ActiveNode
340
372
  end
341
373
 
342
374
  def define_method_unless_defined(method_name, &block)
343
- define_method(method_name, block) unless method_defined?(method_name)
375
+ define_method(method_name, block) unless respond_to?(method_name)
344
376
  end
345
377
 
346
378
  def define_has_one_methods(name)
@@ -351,38 +383,37 @@ module Neo4j::ActiveNode
351
383
  define_has_one_id_methods(name)
352
384
 
353
385
  define_class_method(name) do |node = nil, rel = nil, options = {}|
354
- options, node = node, nil if node.is_a?(Hash)
355
-
356
386
  association_proxy(name, {node: node, rel: rel, labels: options[:labels]}.merge!(options))
357
387
  end
358
388
  end
359
389
 
360
390
  def define_has_one_id_methods(name)
361
- define_method_unless_defined("#{name}_id") do
362
- association_proxy(name).pluck(:uuid).first
391
+ define_method("#{name}_id") do
392
+ association_proxy(name).result_ids.first
363
393
  end
364
394
 
365
395
  define_method_unless_defined("#{name}_id=") do |id|
366
396
  association_proxy(name).replace_with(id)
367
397
  end
368
398
 
369
- define_method_unless_defined("#{name}_neo_id") do
399
+ define_method("#{name}_neo_id") do
370
400
  association_proxy(name).pluck(:neo_id).first
371
401
  end
372
402
  end
373
403
 
374
404
  def define_has_one_getter(name)
375
405
  define_method(name) do |node = nil, rel = nil, options = {}|
376
- return nil unless self._persisted_obj
377
-
378
- options, node = node, nil if node.is_a?(Hash)
406
+ if node.is_a?(Hash)
407
+ options = node
408
+ node = nil
409
+ end
379
410
 
380
411
  # Return all results if a variable-length relationship length was given
381
- results = association_proxy(name, {node: node, rel: rel}.merge!(options))
412
+ association_proxy = association_proxy(name, {node: node, rel: rel}.merge!(options))
382
413
  if options[:rel_length] && !options[:rel_length].is_a?(Fixnum)
383
- results
414
+ association_proxy
384
415
  else
385
- results.result.first
416
+ association_proxy.result_nodes.first
386
417
  end
387
418
  end
388
419
  end
@@ -395,7 +426,7 @@ module Neo4j::ActiveNode
395
426
  Neo4j::Transaction.run { association_proxy(name).replace_with(other_node) }
396
427
  # handle_non_persisted_node(other_node)
397
428
  else
398
- association_proxy(name).defer_create(other_node, {}, :'=')
429
+ association_proxy(name).defer_create(other_node)
399
430
  end
400
431
  end
401
432
  end
@@ -179,7 +179,7 @@ module Neo4j
179
179
 
180
180
  def apply_vars_from_options(options)
181
181
  @relationship_class_name = options[:rel_class] && options[:rel_class].to_s
182
- @relationship_type = options[:type] && options[:type].to_sym
182
+ @relationship_type = options[:type] && options[:type].to_sym
183
183
 
184
184
  @model_class = options[:model_class]
185
185
  @callbacks = {before: options[:before], after: options[:after]}
@@ -140,7 +140,7 @@ module Neo4j::ActiveNode
140
140
 
141
141
  def id_property(name, conf = {})
142
142
  self.manual_id_property = true
143
- Neo4j::Session.on_session_available do |_|
143
+ Neo4j::Session.on_next_session_available do |_|
144
144
  @id_property_info = {name: name, type: conf}
145
145
  TypeMethods.define_id_methods(self, name, conf)
146
146
  constraint(name, type: :unique) unless conf[:constraint] == false
@@ -28,7 +28,7 @@ module Neo4j::ActiveNode::IdProperty
28
28
  @default_property_key ||= default_properties_keys.first
29
29
  end
30
30
 
31
- # TODO: Move this to the DeclaredPropertyManager
31
+ # TODO: Move this to the DeclaredProperties
32
32
  def default_property(name, &block)
33
33
  reset_default_properties(name) if default_properties.respond_to?(:size)
34
34
  default_properties[name] = block
@@ -3,6 +3,7 @@ module Neo4j
3
3
  # Provides a mapping between neo4j labels and Ruby classes
4
4
  module Labels
5
5
  extend ActiveSupport::Concern
6
+ include Neo4j::ActiveNode::Labels::Index
6
7
  include Neo4j::ActiveNode::Labels::Reloading
7
8
 
8
9
  WRAPPED_CLASSES = []
@@ -84,13 +85,13 @@ module Neo4j
84
85
  def find(id)
85
86
  map_id = proc { |object| object.respond_to?(:id) ? object.send(:id) : object }
86
87
 
87
- result = if id.is_a?(Array)
88
- find_by_ids(id.map { |o| map_id.call(o) })
89
- else
90
- find_by_id(map_id.call(id))
91
- end
88
+ result = if id.is_a?(Array)
89
+ find_by_ids(id.map { |o| map_id.call(o) })
90
+ else
91
+ find_by_id(map_id.call(id))
92
+ end
92
93
  fail Neo4j::RecordNotFound if result.blank?
93
- result.tap { |r| find_callbacks!(r) }
94
+ result
94
95
  end
95
96
 
96
97
  # Finds the first record matching the specified conditions. There is no implied ordering so if order matters, you should specify it yourself.
@@ -116,71 +117,6 @@ module Neo4j
116
117
  all.each(&:destroy)
117
118
  end
118
119
 
119
- # Creates a Neo4j index on given property
120
- #
121
- # This can also be done on the property directly, see Neo4j::ActiveNode::Property::ClassMethods#property.
122
- #
123
- # @param [Symbol] property the property we want a Neo4j index on
124
- # @param [Hash] conf optional property configuration
125
- #
126
- # @example
127
- # class Person
128
- # include Neo4j::ActiveNode
129
- # property :name
130
- # index :name
131
- # end
132
- #
133
- # @example with constraint
134
- # class Person
135
- # include Neo4j::ActiveNode
136
- # property :name
137
- #
138
- # # below is same as: index :name, index: :exact, constraint: {type: :unique}
139
- # index :name, constraint: {type: :unique}
140
- # end
141
- def index(property, conf = {})
142
- Neo4j::Session.on_session_available do |_|
143
- drop_constraint(property, type: :unique) if Neo4j::Label.constraint?(mapped_label_name, property)
144
- _index(property, conf)
145
- end
146
- indexed_properties.push property unless indexed_properties.include? property
147
- end
148
-
149
- # Creates a neo4j constraint on this class for given property
150
- #
151
- # @example
152
- # Person.constraint :name, type: :unique
153
- #
154
- def constraint(property, constraints)
155
- Neo4j::Session.on_session_available do |session|
156
- unless Neo4j::Label.constraint?(mapped_label_name, property)
157
- label = Neo4j::Label.create(mapped_label_name)
158
- drop_index(property, label) if index?(property)
159
- label.create_constraint(property, constraints, session)
160
- end
161
- end
162
- end
163
-
164
- # @param [Symbol] property The name of the property index to be dropped
165
- # @param [Neo4j::Label] label An instance of label from Neo4j::Core
166
- def drop_index(property, label = nil)
167
- label_obj = label || Neo4j::Label.create(mapped_label_name)
168
- label_obj.drop_index(property)
169
- end
170
-
171
- # @param [Symbol] property The name of the property constraint to be dropped
172
- # @param [Hash] constraint The constraint type to be dropped.
173
- def drop_constraint(property, constraint = {type: :unique})
174
- Neo4j::Session.on_session_available do |session|
175
- label = Neo4j::Label.create(mapped_label_name)
176
- label.drop_constraint(property, constraint, session)
177
- end
178
- end
179
-
180
- def index?(index_def)
181
- mapped_label.indexes[:property_keys].include?([index_def])
182
- end
183
-
184
120
  # @return [Array{Symbol}] all the labels that this class has
185
121
  def mapped_label_names
186
122
  self.ancestors.find_all { |a| a.respond_to?(:mapped_label_name) }.map { |a| a.mapped_label_name.to_sym }
@@ -196,10 +132,6 @@ module Neo4j
196
132
  Neo4j::Label.create(mapped_label_name)
197
133
  end
198
134
 
199
- def indexed_properties
200
- @_indexed_properties ||= []
201
- end
202
-
203
135
  def base_class
204
136
  unless self < Neo4j::ActiveNode
205
137
  fail "#{name} doesn't belong in a hierarchy descending from ActiveNode"
@@ -212,23 +144,8 @@ module Neo4j
212
144
  end
213
145
  end
214
146
 
215
-
216
147
  protected
217
148
 
218
- def _index(property, conf)
219
- mapped_labels.each do |label|
220
- # make sure the property is not indexed twice
221
- existing = label.indexes[:property_keys]
222
-
223
- # In neo4j constraint automatically creates an index
224
- if conf[:constraint]
225
- constraint(property, conf[:constraint])
226
- else
227
- label.create_index(property) unless existing.flatten.include?(property)
228
- end
229
- end
230
- end
231
-
232
149
  def mapped_labels
233
150
  mapped_label_names.map { |label_name| Neo4j::Label.create(label_name) }
234
151
  end
@@ -247,17 +164,6 @@ module Neo4j
247
164
 
248
165
  private
249
166
 
250
- def find_callbacks!(result)
251
- case result
252
- when Neo4j::ActiveNode
253
- result.run_callbacks(:find)
254
- when Array
255
- result.each { |r| find_callbacks!(r) }
256
- else
257
- result
258
- end
259
- end
260
-
261
167
  def label_for_model
262
168
  (self.name.nil? ? object_id.to_s.to_sym : decorated_label_name)
263
169
  end