mongoid 6.4.2 → 7.0.3
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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/config/locales/en.yml +17 -0
- data/lib/mongoid/association/accessors.rb +339 -0
- data/lib/mongoid/{relations/binding.rb → association/bindable.rb} +32 -52
- data/lib/mongoid/association/builders.rb +92 -0
- data/lib/mongoid/{relations/constraint.rb → association/constrainable.rb} +11 -22
- data/lib/mongoid/association/depending.rb +137 -0
- data/lib/mongoid/{relations/eager.rb → association/eager_loadable.rb} +11 -11
- data/lib/mongoid/{relations → association}/embedded/batchable.rb +19 -19
- data/lib/mongoid/association/embedded/cyclic.rb +109 -0
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +56 -0
- data/lib/mongoid/{relations/builders/embedded/in.rb → association/embedded/embedded_in/buildable.rb} +12 -6
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +121 -0
- data/lib/mongoid/association/embedded/embedded_in.rb +154 -0
- data/lib/mongoid/{relations/bindings/embedded/many.rb → association/embedded/embeds_many/binding.rb} +11 -9
- data/lib/mongoid/{relations/builders/embedded/many.rb → association/embedded/embeds_many/buildable.rb} +13 -7
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +552 -0
- data/lib/mongoid/association/embedded/embeds_many.rb +210 -0
- data/lib/mongoid/{relations/bindings/embedded/one.rb → association/embedded/embeds_one/binding.rb} +12 -10
- data/lib/mongoid/{relations/builders/embedded/one.rb → association/embedded/embeds_one/buildable.rb} +13 -7
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +130 -0
- data/lib/mongoid/association/embedded/embeds_one.rb +173 -0
- data/lib/mongoid/association/embedded.rb +4 -0
- data/lib/mongoid/association/macros.rb +204 -0
- data/lib/mongoid/{relations → association}/many.rb +19 -49
- data/lib/mongoid/{relations → association}/marshalable.rb +6 -4
- data/lib/mongoid/association/nested/many.rb +200 -0
- data/lib/mongoid/association/nested/nested_buildable.rb +72 -0
- data/lib/mongoid/association/nested/one.rb +127 -0
- data/lib/mongoid/association/nested.rb +15 -0
- data/lib/mongoid/{relations → association}/one.rb +6 -6
- data/lib/mongoid/association/options.rb +152 -0
- data/lib/mongoid/{relations → association}/proxy.rb +31 -58
- data/lib/mongoid/association/referenced/auto_save.rb +79 -0
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +87 -0
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +46 -0
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +36 -0
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +136 -0
- data/lib/mongoid/association/referenced/belongs_to.rb +248 -0
- data/lib/mongoid/association/referenced/counter_cache.rb +163 -0
- data/lib/mongoid/association/referenced/eager.rb +162 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +71 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +40 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +52 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +312 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +290 -0
- data/lib/mongoid/{relations/bindings/referenced/many.rb → association/referenced/has_many/binding.rb} +6 -5
- data/lib/mongoid/association/referenced/has_many/buildable.rb +38 -0
- data/lib/mongoid/association/referenced/has_many/eager.rb +43 -0
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +510 -0
- data/lib/mongoid/association/referenced/has_many/proxy.rb +578 -0
- data/lib/mongoid/association/referenced/has_many.rb +275 -0
- data/lib/mongoid/{relations/bindings/referenced/one.rb → association/referenced/has_one/binding.rb} +11 -8
- data/lib/mongoid/association/referenced/has_one/buildable.rb +60 -0
- data/lib/mongoid/association/referenced/has_one/eager.rb +35 -0
- data/lib/mongoid/{relations/builders/nested_attributes/one.rb → association/referenced/has_one/nested_builder.rb} +9 -9
- data/lib/mongoid/association/referenced/has_one/proxy.rb +113 -0
- data/lib/mongoid/association/referenced/has_one.rb +204 -0
- data/lib/mongoid/association/referenced/syncable.rb +170 -0
- data/lib/mongoid/association/referenced.rb +7 -0
- data/lib/mongoid/{relations → association}/reflections.rb +21 -17
- data/lib/mongoid/association/relatable.rb +509 -0
- data/lib/mongoid/{relations.rb → association.rb} +57 -56
- data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
- data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
- data/lib/mongoid/atomic.rb +4 -4
- data/lib/mongoid/attributes/dynamic.rb +2 -2
- data/lib/mongoid/attributes/nested.rb +22 -11
- data/lib/mongoid/attributes/processing.rb +2 -2
- data/lib/mongoid/attributes/readonly.rb +2 -4
- data/lib/mongoid/attributes.rb +22 -13
- data/lib/mongoid/changeable.rb +1 -1
- data/lib/mongoid/clients/options.rb +7 -5
- data/lib/mongoid/composable.rb +4 -4
- data/lib/mongoid/config.rb +1 -0
- data/lib/mongoid/contextual/atomic.rb +1 -1
- data/lib/mongoid/contextual/geo_near.rb +1 -1
- data/lib/mongoid/contextual/memory.rb +21 -3
- data/lib/mongoid/contextual/mongo.rb +10 -8
- data/lib/mongoid/copyable.rb +7 -6
- data/lib/mongoid/criteria/includable.rb +14 -14
- data/lib/mongoid/criteria/modifiable.rb +8 -14
- data/lib/mongoid/criteria/options.rb +2 -2
- data/lib/mongoid/criteria/queryable/extensions/string.rb +1 -1
- data/lib/mongoid/criteria/queryable/pipeline.rb +10 -5
- data/lib/mongoid/criteria/queryable/selectable.rb +37 -7
- data/lib/mongoid/criteria.rb +2 -2
- data/lib/mongoid/document.rb +15 -6
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +32 -0
- data/lib/mongoid/errors/invalid_relation_option.rb +29 -0
- data/lib/mongoid/errors/unknown_model.rb +25 -0
- data/lib/mongoid/errors.rb +3 -0
- data/lib/mongoid/extensions/array.rb +5 -5
- data/lib/mongoid/extensions/big_decimal.rb +1 -1
- data/lib/mongoid/extensions/hash.rb +5 -2
- data/lib/mongoid/extensions/object.rb +4 -4
- data/lib/mongoid/extensions/range.rb +1 -0
- data/lib/mongoid/extensions/regexp.rb +1 -0
- data/lib/mongoid/extensions.rb +0 -4
- data/lib/mongoid/factory.rb +13 -3
- data/lib/mongoid/fields/foreign_key.rb +5 -5
- data/lib/mongoid/fields/standard.rb +2 -14
- data/lib/mongoid/fields/validators/macro.rb +1 -1
- data/lib/mongoid/fields.rb +3 -3
- data/lib/mongoid/indexable.rb +4 -1
- data/lib/mongoid/interceptable.rb +5 -5
- data/lib/mongoid/matchable/and.rb +1 -1
- data/lib/mongoid/matchable/elem_match.rb +9 -3
- data/lib/mongoid/matchable/eq.rb +22 -0
- data/lib/mongoid/matchable/ne.rb +1 -1
- data/lib/mongoid/matchable.rb +3 -1
- data/lib/mongoid/persistable/deletable.rb +7 -6
- data/lib/mongoid/persistable/incrementable.rb +1 -1
- data/lib/mongoid/persistable/logical.rb +1 -1
- data/lib/mongoid/persistable/settable.rb +57 -12
- data/lib/mongoid/persistable.rb +4 -5
- data/lib/mongoid/persistence_context.rb +20 -5
- data/lib/mongoid/query_cache.rb +8 -4
- data/lib/mongoid/railtie.rb +17 -0
- data/lib/mongoid/railties/controller_runtime.rb +86 -0
- data/lib/mongoid/scopable.rb +3 -3
- data/lib/mongoid/serializable.rb +4 -4
- data/lib/mongoid/shardable.rb +1 -1
- data/lib/mongoid/threaded.rb +36 -0
- data/lib/mongoid/touchable.rb +102 -0
- data/lib/mongoid/traversable.rb +3 -3
- data/lib/mongoid/validatable/presence.rb +2 -2
- data/lib/mongoid/validatable/uniqueness.rb +4 -4
- data/lib/mongoid/validatable.rb +8 -8
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +3 -0
- data/spec/app/models/animal.rb +2 -1
- data/spec/app/models/bomb.rb +1 -1
- data/spec/app/models/message.rb +1 -1
- data/spec/app/models/minim.rb +7 -0
- data/spec/app/models/person.rb +5 -2
- data/spec/app/models/shipment_address.rb +1 -0
- data/spec/app/models/store_as_dup_test3.rb +7 -0
- data/spec/app/models/store_as_dup_test4.rb +7 -0
- data/spec/app/models/updatable.rb +7 -0
- data/spec/app/models/vertex.rb +6 -0
- data/spec/app/models/wiki_page.rb +1 -1
- data/spec/config/mongoid.yml +13 -3
- data/spec/integration/associations/belongs_to_spec.rb +13 -0
- data/spec/lite_spec_helper.rb +56 -0
- data/spec/mongoid/{relations → association}/accessors_spec.rb +40 -1
- data/spec/mongoid/{relations → association}/auto_save_spec.rb +60 -12
- data/spec/mongoid/{relations → association}/builders_spec.rb +1 -1
- data/spec/mongoid/association/constrainable_spec.rb +115 -0
- data/spec/mongoid/{relations → association}/counter_cache_spec.rb +1 -1
- data/spec/mongoid/association/depending_spec.rb +866 -0
- data/spec/mongoid/{relations → association}/eager_spec.rb +12 -12
- data/spec/mongoid/{relations → association/embedded}/cyclic_spec.rb +1 -1
- data/spec/mongoid/{relations/bindings/embedded/in_spec.rb → association/embedded/embedded_in/binding_spec.rb} +13 -13
- data/spec/mongoid/{relations/builders/embedded/in_spec.rb → association/embedded/embedded_in/buildable_spec.rb} +9 -9
- data/spec/mongoid/{relations/embedded/in_spec.rb → association/embedded/embedded_in/proxy_spec.rb} +5 -77
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +843 -0
- data/spec/mongoid/{relations/bindings/embedded/many_spec.rb → association/embedded/embeds_many/binding_spec.rb} +3 -3
- data/spec/mongoid/{relations/builders/embedded/many_spec.rb → association/embedded/embeds_many/buildable_spec.rb} +17 -45
- data/spec/mongoid/{relations/embedded/many_spec.rb → association/embedded/embeds_many/proxy_spec.rb} +124 -182
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +852 -0
- data/spec/mongoid/{relations/bindings/embedded/one_spec.rb → association/embedded/embeds_one/binding_spec.rb} +4 -4
- data/spec/mongoid/{relations/builders/embedded/one_spec.rb → association/embedded/embeds_one/buildable_spec.rb} +14 -34
- data/spec/mongoid/{relations/embedded/one_spec.rb → association/embedded/embeds_one/proxy_spec.rb} +39 -84
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +908 -0
- data/spec/mongoid/{relations → association}/macros_spec.rb +148 -73
- data/spec/mongoid/{relations/builders/nested_attributes → association/nested}/many_spec.rb +16 -19
- data/spec/mongoid/{relations/builders/nested_attributes → association/nested}/one_spec.rb +17 -20
- data/spec/mongoid/association/options_spec.rb +1321 -0
- data/spec/mongoid/{relations → association}/polymorphic_spec.rb +66 -34
- data/spec/mongoid/{relations/bindings/referenced/in_spec.rb → association/referenced/belongs_to/binding_spec.rb} +7 -7
- data/spec/mongoid/{relations/builders/referenced/in_spec.rb → association/referenced/belongs_to/buildable_spec.rb} +46 -79
- data/spec/mongoid/{relations/eager/belongs_to_spec.rb → association/referenced/belongs_to/eager_spec.rb} +33 -14
- data/spec/mongoid/{relations/referenced/in_spec.rb → association/referenced/belongs_to/proxy_spec.rb} +57 -91
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +2006 -0
- data/spec/mongoid/{relations/bindings/referenced/many_to_many_spec.rb → association/referenced/has_and_belongs_to_many/binding_spec.rb} +5 -5
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +121 -0
- data/spec/mongoid/{relations/eager/has_and_belongs_to_many_spec.rb → association/referenced/has_and_belongs_to_many/eager_spec.rb} +26 -7
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +56 -0
- data/spec/mongoid/{relations/referenced/many_to_many_spec.rb → association/referenced/has_and_belongs_to_many/proxy_spec.rb} +107 -98
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +26 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +1027 -0
- data/spec/mongoid/{relations/bindings/referenced/many_spec.rb → association/referenced/has_many/binding_spec.rb} +5 -5
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +119 -0
- data/spec/mongoid/{relations/eager/has_many_spec.rb → association/referenced/has_many/eager_spec.rb} +26 -11
- data/spec/mongoid/{relations/targets → association/referenced/has_many}/enumerable_spec.rb +122 -1
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +23 -0
- data/spec/mongoid/{relations/referenced/many_spec.rb → association/referenced/has_many/proxy_spec.rb} +28 -93
- data/spec/mongoid/association/referenced/has_many_models.rb +37 -0
- data/spec/mongoid/association/referenced/has_many_spec.rb +1225 -0
- data/spec/mongoid/{relations/bindings/referenced/one_spec.rb → association/referenced/has_one/binding_spec.rb} +4 -4
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +113 -0
- data/spec/mongoid/{relations/eager/has_one_spec.rb → association/referenced/has_one/eager_spec.rb} +10 -10
- data/spec/mongoid/{relations/referenced/one_spec.rb → association/referenced/has_one/proxy_spec.rb} +9 -109
- data/spec/mongoid/association/referenced/has_one_models.rb +48 -0
- data/spec/mongoid/association/referenced/has_one_spec.rb +1350 -0
- data/spec/mongoid/{relations → association}/reflections_spec.rb +1 -12
- data/spec/mongoid/{relations/synchronization_spec.rb → association/syncable_spec.rb} +4 -2
- data/spec/mongoid/{relations_spec.rb → association_spec.rb} +1 -1
- data/spec/mongoid/atomic/modifiers_spec.rb +2 -2
- data/spec/mongoid/atomic_spec.rb +4 -4
- data/spec/mongoid/attributes/nested_spec.rb +29 -11
- data/spec/mongoid/attributes/readonly_spec.rb +80 -125
- data/spec/mongoid/attributes_spec.rb +38 -2
- data/spec/mongoid/clients/factory_spec.rb +24 -18
- data/spec/mongoid/clients/options_spec.rb +58 -44
- data/spec/mongoid/clients/sessions_spec.rb +1 -1
- data/spec/mongoid/clients/transactions_spec.rb +369 -0
- data/spec/mongoid/clients_spec.rb +68 -8
- data/spec/mongoid/config_spec.rb +27 -1
- data/spec/mongoid/contextual/memory_spec.rb +19 -0
- data/spec/mongoid/contextual/mongo_spec.rb +33 -5
- data/spec/mongoid/copyable_spec.rb +90 -6
- data/spec/mongoid/copyable_spec_models.rb +17 -0
- data/spec/mongoid/criteria/modifiable_spec.rb +183 -60
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +3 -3
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +43 -0
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +12 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +42 -3
- data/spec/mongoid/criteria/queryable/selector_spec.rb +2 -2
- data/spec/mongoid/criteria/scopable_spec.rb +81 -0
- data/spec/mongoid/criteria_spec.rb +33 -18
- data/spec/mongoid/document_spec.rb +83 -4
- data/spec/mongoid/extensions/array_spec.rb +11 -15
- data/spec/mongoid/extensions/big_decimal_spec.rb +9 -9
- data/spec/mongoid/extensions/hash_spec.rb +18 -1
- data/spec/mongoid/extensions/object_spec.rb +7 -11
- data/spec/mongoid/extensions/range_spec.rb +7 -0
- data/spec/mongoid/extensions/regexp_spec.rb +23 -0
- data/spec/mongoid/factory_spec.rb +19 -1
- data/spec/mongoid/fields/foreign_key_spec.rb +24 -32
- data/spec/mongoid/fields_spec.rb +2 -2
- data/spec/mongoid/findable_spec.rb +1 -1
- data/spec/mongoid/indexable_spec.rb +18 -8
- data/spec/mongoid/interceptable_spec.rb +22 -1
- data/spec/mongoid/matchable/elem_match_spec.rb +20 -0
- data/spec/mongoid/matchable/eq_spec.rb +48 -0
- data/spec/mongoid/persistable/incrementable_spec.rb +6 -6
- data/spec/mongoid/persistable/savable_spec.rb +2 -2
- data/spec/mongoid/persistable/settable_spec.rb +95 -10
- data/spec/mongoid/persistable_spec.rb +21 -6
- data/spec/mongoid/persistence_context_spec.rb +1 -1
- data/spec/mongoid/query_cache_spec.rb +61 -22
- data/spec/mongoid/relations/proxy_spec.rb +124 -124
- data/spec/mongoid/scopable_spec.rb +13 -0
- data/spec/mongoid/shardable_spec.rb +32 -12
- data/spec/mongoid/threaded_spec.rb +68 -0
- data/spec/mongoid/{relations/touchable_spec.rb → touchable_spec.rb} +40 -1
- data/spec/mongoid/validatable/associated_spec.rb +1 -1
- data/spec/mongoid/validatable/presence_spec.rb +7 -6
- data/spec/mongoid/validatable_spec.rb +1 -1
- data/spec/rails/controller_extension/controller_runtime_spec.rb +110 -0
- data/spec/spec_helper.rb +51 -25
- data/spec/support/constraints.rb +101 -0
- data/spec/support/macros.rb +20 -0
- data/spec/support/spec_config.rb +39 -0
- metadata +602 -582
- checksums.yaml.gz.sig +0 -2
- data/lib/mongoid/relations/accessors.rb +0 -267
- data/lib/mongoid/relations/auto_save.rb +0 -94
- data/lib/mongoid/relations/bindings/embedded/in.rb +0 -59
- data/lib/mongoid/relations/bindings/referenced/in.rb +0 -65
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +0 -70
- data/lib/mongoid/relations/bindings.rb +0 -9
- data/lib/mongoid/relations/builder.rb +0 -57
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +0 -199
- data/lib/mongoid/relations/builders/referenced/in.rb +0 -26
- data/lib/mongoid/relations/builders/referenced/many.rb +0 -26
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +0 -39
- data/lib/mongoid/relations/builders/referenced/one.rb +0 -26
- data/lib/mongoid/relations/builders.rb +0 -106
- data/lib/mongoid/relations/cascading/delete.rb +0 -44
- data/lib/mongoid/relations/cascading/destroy.rb +0 -43
- data/lib/mongoid/relations/cascading/nullify.rb +0 -35
- data/lib/mongoid/relations/cascading/restrict.rb +0 -39
- data/lib/mongoid/relations/cascading.rb +0 -56
- data/lib/mongoid/relations/conversions.rb +0 -34
- data/lib/mongoid/relations/counter_cache.rb +0 -160
- data/lib/mongoid/relations/cyclic.rb +0 -107
- data/lib/mongoid/relations/eager/base.rb +0 -153
- data/lib/mongoid/relations/eager/belongs_to.rb +0 -31
- data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +0 -47
- data/lib/mongoid/relations/eager/has_many.rb +0 -38
- data/lib/mongoid/relations/eager/has_one.rb +0 -30
- data/lib/mongoid/relations/embedded/in.rb +0 -241
- data/lib/mongoid/relations/embedded/many.rb +0 -683
- data/lib/mongoid/relations/embedded/one.rb +0 -235
- data/lib/mongoid/relations/macros.rb +0 -367
- data/lib/mongoid/relations/metadata.rb +0 -1179
- data/lib/mongoid/relations/nested_builder.rb +0 -74
- data/lib/mongoid/relations/options.rb +0 -49
- data/lib/mongoid/relations/polymorphic.rb +0 -39
- data/lib/mongoid/relations/referenced/in.rb +0 -304
- data/lib/mongoid/relations/referenced/many.rb +0 -812
- data/lib/mongoid/relations/referenced/many_to_many.rb +0 -479
- data/lib/mongoid/relations/referenced/one.rb +0 -290
- data/lib/mongoid/relations/synchronization.rb +0 -169
- data/lib/mongoid/relations/targets/enumerable.rb +0 -493
- data/lib/mongoid/relations/targets.rb +0 -2
- data/lib/mongoid/relations/touchable.rb +0 -97
- data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +0 -184
- data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +0 -201
- data/spec/mongoid/relations/builders/referenced/many_spec.rb +0 -137
- data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +0 -178
- data/spec/mongoid/relations/builders/referenced/one_spec.rb +0 -111
- data/spec/mongoid/relations/cascading/delete_spec.rb +0 -101
- data/spec/mongoid/relations/cascading/destroy_spec.rb +0 -47
- data/spec/mongoid/relations/cascading/nullify_spec.rb +0 -32
- data/spec/mongoid/relations/cascading/restrict_spec.rb +0 -68
- data/spec/mongoid/relations/cascading_spec.rb +0 -355
- data/spec/mongoid/relations/constraint_spec.rb +0 -75
- data/spec/mongoid/relations/conversions_spec.rb +0 -128
- data/spec/mongoid/relations/metadata_spec.rb +0 -1985
- data/spec/mongoid/relations/options_spec.rb +0 -35
- data.tar.gz.sig +0 -0
- metadata.gz.sig +0 -0
- /data/spec/mongoid/{relations → association}/embedded/dirty_spec.rb +0 -0
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid
|
|
3
|
-
module Relations
|
|
4
|
-
module CounterCache
|
|
5
|
-
extend ActiveSupport::Concern
|
|
6
|
-
|
|
7
|
-
# Reset the given counter using the .count() query from the
|
|
8
|
-
# db. This method is usuful in case that a counter got
|
|
9
|
-
# corrupted, or a new counter was added to the collection.
|
|
10
|
-
#
|
|
11
|
-
# @example Reset the given counter cache
|
|
12
|
-
# post.reset_counters(:comments)
|
|
13
|
-
#
|
|
14
|
-
# @param [ Symbol, Array ] counters One or more counter caches to reset
|
|
15
|
-
#
|
|
16
|
-
# @since 4.0.0
|
|
17
|
-
def reset_counters(*counters)
|
|
18
|
-
self.class.with(persistence_context) do |_class|
|
|
19
|
-
_class.reset_counters(self, *counters)
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
module ClassMethods
|
|
24
|
-
|
|
25
|
-
# Reset the given counter using the .count() query from the
|
|
26
|
-
# db. This method is usuful in case that a counter got
|
|
27
|
-
# corrupted, or a new counter was added to the collection.
|
|
28
|
-
#
|
|
29
|
-
# @example Reset the given counter cache
|
|
30
|
-
# Post.reset_counters('50e0edd97c71c17ea9000001', :comments)
|
|
31
|
-
#
|
|
32
|
-
# @param [ String ] id The id of the object that will be reset.
|
|
33
|
-
# @param [ Symbol, Array ] counters One or more counter caches to reset
|
|
34
|
-
#
|
|
35
|
-
# @since 3.1.0
|
|
36
|
-
def reset_counters(id, *counters)
|
|
37
|
-
document = id.is_a?(Document) ? id : find(id)
|
|
38
|
-
counters.each do |name|
|
|
39
|
-
meta = reflect_on_association(name)
|
|
40
|
-
inverse = meta.klass.reflect_on_association(meta.inverse)
|
|
41
|
-
counter_name = inverse.counter_cache_column_name
|
|
42
|
-
document.update_attribute(counter_name, document.send(name).count)
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# Update the given counters by the value factor. It uses the
|
|
47
|
-
# atomic $inc command.
|
|
48
|
-
#
|
|
49
|
-
# @example Add 5 to comments counter and remove 2 from likes
|
|
50
|
-
# counter.
|
|
51
|
-
# Post.update_counters('50e0edd97c71c17ea9000001',
|
|
52
|
-
# :comments_count => 5, :likes_count => -2)
|
|
53
|
-
#
|
|
54
|
-
# @param [ String ] id The id of the object to update.
|
|
55
|
-
# @param [ Hash ] counters
|
|
56
|
-
#
|
|
57
|
-
# @since 3.1.0
|
|
58
|
-
def update_counters(id, counters)
|
|
59
|
-
where(:_id => id).inc(counters)
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
# Increment the counter name from the entries that match the
|
|
63
|
-
# id by one. This method is used on associations callbacks
|
|
64
|
-
# when counter_cache is enabled
|
|
65
|
-
#
|
|
66
|
-
# @example Increment comments counter
|
|
67
|
-
# Post.increment_counter(:comments_count, '50e0edd97c71c17ea9000001')
|
|
68
|
-
#
|
|
69
|
-
# @param [ Symbol ] counter_name Counter cache name
|
|
70
|
-
# @param [ String ] id The id of the object that will have its counter incremented.
|
|
71
|
-
#
|
|
72
|
-
# @since 3.1.0
|
|
73
|
-
def increment_counter(counter_name, id)
|
|
74
|
-
update_counters(id, counter_name.to_sym => 1)
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
# Decrement the counter name from the entries that match the
|
|
78
|
-
# id by one. This method is used on associations callbacks
|
|
79
|
-
# when counter_cache is enabled
|
|
80
|
-
#
|
|
81
|
-
# @example Decrement comments counter
|
|
82
|
-
# Post.decrement_counter(:comments_count, '50e0edd97c71c17ea9000001')
|
|
83
|
-
#
|
|
84
|
-
# @param [ Symbol ] counter_name Counter cache name
|
|
85
|
-
# @param [ String ] id The id of the object that will have its counter decremented.
|
|
86
|
-
#
|
|
87
|
-
# @since 3.1.0
|
|
88
|
-
def decrement_counter(counter_name, id)
|
|
89
|
-
update_counters(id, counter_name.to_sym => -1)
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
private
|
|
93
|
-
|
|
94
|
-
# Add the callbacks responsible for update the counter cache field
|
|
95
|
-
#
|
|
96
|
-
# @api private
|
|
97
|
-
#
|
|
98
|
-
# @example Add the touchable.
|
|
99
|
-
# Person.add_counter_cache_callbacks(meta)
|
|
100
|
-
#
|
|
101
|
-
# @param [ Metadata ] meta The metadata for the relation.
|
|
102
|
-
#
|
|
103
|
-
# @since 3.1.0
|
|
104
|
-
def add_counter_cache_callbacks(meta)
|
|
105
|
-
name = meta.name
|
|
106
|
-
cache_column = meta.counter_cache_column_name.to_sym
|
|
107
|
-
|
|
108
|
-
after_update do
|
|
109
|
-
if record = __send__(name)
|
|
110
|
-
foreign_key = meta.foreign_key
|
|
111
|
-
|
|
112
|
-
if attribute_changed?(foreign_key)
|
|
113
|
-
original, current = attribute_change(foreign_key)
|
|
114
|
-
|
|
115
|
-
unless original.nil?
|
|
116
|
-
record.class.with(persistence_context) do |_class|
|
|
117
|
-
_class.decrement_counter(cache_column, original)
|
|
118
|
-
end
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
unless current.nil?
|
|
122
|
-
record[cache_column] = (record[cache_column] || 0) + 1
|
|
123
|
-
record.class.with(record.persistence_context) do |_class|
|
|
124
|
-
_class.increment_counter(cache_column, current) if record.persisted?
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
end
|
|
128
|
-
end
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
after_create do
|
|
132
|
-
if record = __send__(name)
|
|
133
|
-
record[cache_column] = (record[cache_column] || 0) + 1
|
|
134
|
-
|
|
135
|
-
if record.persisted?
|
|
136
|
-
record.class.with(record.persistence_context) do |_class|
|
|
137
|
-
_class.increment_counter(cache_column, record._id)
|
|
138
|
-
end
|
|
139
|
-
record.remove_change(cache_column)
|
|
140
|
-
end
|
|
141
|
-
end
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
before_destroy do
|
|
145
|
-
if record = __send__(name)
|
|
146
|
-
record[cache_column] = (record[cache_column] || 0) - 1 unless record.frozen?
|
|
147
|
-
|
|
148
|
-
if record.persisted?
|
|
149
|
-
record.class.with(record.persistence_context) do |_class|
|
|
150
|
-
_class.decrement_counter(cache_column, record._id)
|
|
151
|
-
end
|
|
152
|
-
record.remove_change(cache_column)
|
|
153
|
-
end
|
|
154
|
-
end
|
|
155
|
-
end
|
|
156
|
-
end
|
|
157
|
-
end
|
|
158
|
-
end
|
|
159
|
-
end
|
|
160
|
-
end
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid
|
|
3
|
-
module Relations
|
|
4
|
-
|
|
5
|
-
# This module provides convenience macros for using cyclic embedded
|
|
6
|
-
# relations.
|
|
7
|
-
module Cyclic
|
|
8
|
-
extend ActiveSupport::Concern
|
|
9
|
-
|
|
10
|
-
included do
|
|
11
|
-
class_attribute :cyclic
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
module ClassMethods
|
|
15
|
-
|
|
16
|
-
# Create a cyclic embedded relation that creates a tree hierarchy for
|
|
17
|
-
# the document and many embedded child documents.
|
|
18
|
-
#
|
|
19
|
-
# @example Set up a recursive embeds many.
|
|
20
|
-
#
|
|
21
|
-
# class Role
|
|
22
|
-
# include Mongoid::Document
|
|
23
|
-
# recursively_embeds_many
|
|
24
|
-
# end
|
|
25
|
-
#
|
|
26
|
-
# @example The previous example is a shorcut for this.
|
|
27
|
-
#
|
|
28
|
-
# class Role
|
|
29
|
-
# include Mongoid::Document
|
|
30
|
-
# embeds_many :child_roles, :class_name => "Role", :cyclic => true
|
|
31
|
-
# embedded_in :parent_role, :class_name => "Role", :cyclic => true
|
|
32
|
-
# end
|
|
33
|
-
#
|
|
34
|
-
# This provides the default nomenclature for accessing a parent document
|
|
35
|
-
# or its children.
|
|
36
|
-
#
|
|
37
|
-
# @since 2.0.0.rc.1
|
|
38
|
-
def recursively_embeds_many(options = {})
|
|
39
|
-
embeds_many(
|
|
40
|
-
cyclic_child_name,
|
|
41
|
-
options.merge(class_name: self.name, cyclic: true)
|
|
42
|
-
)
|
|
43
|
-
embedded_in cyclic_parent_name, class_name: self.name, cyclic: true
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# Create a cyclic embedded relation that creates a single self
|
|
47
|
-
# referencing relationship for a parent and a single child.
|
|
48
|
-
#
|
|
49
|
-
# @example Set up a recursive embeds one.
|
|
50
|
-
#
|
|
51
|
-
# class Role
|
|
52
|
-
# include Mongoid::Document
|
|
53
|
-
# recursively_embeds_one
|
|
54
|
-
# end
|
|
55
|
-
#
|
|
56
|
-
# @example The previous example is a shorcut for this.
|
|
57
|
-
#
|
|
58
|
-
# class Role
|
|
59
|
-
# include Mongoid::Document
|
|
60
|
-
# embeds_one :child_role, :class_name => "Role", :cyclic => true
|
|
61
|
-
# embedded_in :parent_role, :class_name => "Role", :cyclic => true
|
|
62
|
-
# end
|
|
63
|
-
#
|
|
64
|
-
# This provides the default nomenclature for accessing a parent document
|
|
65
|
-
# or its children.
|
|
66
|
-
#
|
|
67
|
-
# @since 2.0.0.rc.1
|
|
68
|
-
def recursively_embeds_one(options = {})
|
|
69
|
-
embeds_one(
|
|
70
|
-
cyclic_child_name(false),
|
|
71
|
-
options.merge(class_name: self.name, cyclic: true)
|
|
72
|
-
)
|
|
73
|
-
embedded_in cyclic_parent_name, class_name: self.name, cyclic: true
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
private
|
|
77
|
-
|
|
78
|
-
# Determines the parent name given the class.
|
|
79
|
-
#
|
|
80
|
-
# @example Determine the parent name.
|
|
81
|
-
# Role.cyclic_parent_name
|
|
82
|
-
#
|
|
83
|
-
# @return [ String ] "parent_" plus the class name underscored.
|
|
84
|
-
#
|
|
85
|
-
# @since 2.0.0.rc.1
|
|
86
|
-
def cyclic_parent_name
|
|
87
|
-
("parent_" << self.name.demodulize.underscore.singularize).to_sym
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
# Determines the child name given the class.
|
|
91
|
-
#
|
|
92
|
-
# @example Determine the child name.
|
|
93
|
-
# Role.cyclic_child_name
|
|
94
|
-
#
|
|
95
|
-
# @param [ true, false ] many Is the a many relation?
|
|
96
|
-
#
|
|
97
|
-
# @return [ String ] "child_" plus the class name underscored in
|
|
98
|
-
# singular or plural form.
|
|
99
|
-
#
|
|
100
|
-
# @since 2.0.0.rc.1
|
|
101
|
-
def cyclic_child_name(many = true)
|
|
102
|
-
("child_" << self.name.demodulize.underscore.send(many ? :pluralize : :singularize)).to_sym
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
end
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid
|
|
3
|
-
module Relations
|
|
4
|
-
module Eager
|
|
5
|
-
# Base class for eager load preload functions.
|
|
6
|
-
#
|
|
7
|
-
# @since 4.0.0
|
|
8
|
-
class Base
|
|
9
|
-
|
|
10
|
-
# Instantiate the eager load class.
|
|
11
|
-
#
|
|
12
|
-
# @example Create the new belongs to eager load preloader.
|
|
13
|
-
# BelongsTo.new(relations_metadata, parent_docs)
|
|
14
|
-
#
|
|
15
|
-
# @param [ Array<Metadata> ] associations Relations to eager load
|
|
16
|
-
# @param [ Array<Document> ] docs Documents to preload the relations
|
|
17
|
-
#
|
|
18
|
-
# @return [ Base ] The eager load preloader
|
|
19
|
-
#
|
|
20
|
-
# @since 4.0.0
|
|
21
|
-
def initialize(associations, docs)
|
|
22
|
-
@associations = associations
|
|
23
|
-
@docs = docs
|
|
24
|
-
@grouped_docs = {}
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
# Shift the current relation metadata
|
|
28
|
-
#
|
|
29
|
-
# @example Shift the current metadata.
|
|
30
|
-
# loader.shift_metadata
|
|
31
|
-
#
|
|
32
|
-
# @return [ Object ] The relation metadata object.
|
|
33
|
-
#
|
|
34
|
-
# @since 4.0.0
|
|
35
|
-
def shift_metadata
|
|
36
|
-
@metadata = @associations.shift
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
# Run the preloader.
|
|
40
|
-
#
|
|
41
|
-
# @example Preload the relations into the documents.
|
|
42
|
-
# loader.run
|
|
43
|
-
#
|
|
44
|
-
# @return [ Array ] The list of documents given.
|
|
45
|
-
#
|
|
46
|
-
# @since 4.0.0
|
|
47
|
-
def run
|
|
48
|
-
@loaded = []
|
|
49
|
-
while shift_metadata
|
|
50
|
-
preload
|
|
51
|
-
@loaded << @docs.collect { |d| d.send(@metadata.name) if d.respond_to?(@metadata.name) }
|
|
52
|
-
end
|
|
53
|
-
@loaded.flatten
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
# Preload the current relation.
|
|
57
|
-
#
|
|
58
|
-
# This method should be implemented in the subclass
|
|
59
|
-
#
|
|
60
|
-
# @example Preload the current relation into the documents.
|
|
61
|
-
# loader.preload
|
|
62
|
-
#
|
|
63
|
-
# @since 4.0.0
|
|
64
|
-
def preload
|
|
65
|
-
raise NotImplementedError
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
# Run the preloader.
|
|
69
|
-
#
|
|
70
|
-
# @example Iterate over the documents loaded for the current relation
|
|
71
|
-
# loader.each_loaded_document { |doc| }
|
|
72
|
-
#
|
|
73
|
-
# @since 4.0.0
|
|
74
|
-
def each_loaded_document
|
|
75
|
-
criteria = @metadata.klass.any_in(key => keys_from_docs)
|
|
76
|
-
criteria.inclusions = criteria.inclusions - [ @metadata ]
|
|
77
|
-
criteria.each do |doc|
|
|
78
|
-
yield doc
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
# Set the pre-loaded document into its parent.
|
|
83
|
-
#
|
|
84
|
-
# @example Set docs into parent with pk = "foo"
|
|
85
|
-
# loader.set_on_parent("foo", docs)
|
|
86
|
-
#
|
|
87
|
-
# @param [ ObjectId ] id parent`s id
|
|
88
|
-
# @param [ Document, Array ] element to push into the parent
|
|
89
|
-
#
|
|
90
|
-
# @since 4.0.0
|
|
91
|
-
def set_on_parent(id, element)
|
|
92
|
-
grouped_docs[id].each do |d|
|
|
93
|
-
set_relation(d, element)
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
# Return a hash with the current documents grouped by key.
|
|
98
|
-
#
|
|
99
|
-
# @example Return a hash with the current documents grouped by key.
|
|
100
|
-
# loader.grouped_docs
|
|
101
|
-
#
|
|
102
|
-
# @return [ Hash ] hash with grouped documents.
|
|
103
|
-
#
|
|
104
|
-
# @since 4.0.0
|
|
105
|
-
def grouped_docs
|
|
106
|
-
@grouped_docs[@metadata.name] ||= @docs.group_by do |doc|
|
|
107
|
-
doc.send(group_by_key) if doc.respond_to?(group_by_key)
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
# Group the documents and return the keys
|
|
112
|
-
#
|
|
113
|
-
# @example
|
|
114
|
-
# loader.keys_from_docs
|
|
115
|
-
#
|
|
116
|
-
# @return [ Array ] keys, ids
|
|
117
|
-
#
|
|
118
|
-
# @since 4.0.0
|
|
119
|
-
def keys_from_docs
|
|
120
|
-
grouped_docs.keys
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
# Return the key to group the current documents.
|
|
124
|
-
#
|
|
125
|
-
# This method should be implemented in the subclass
|
|
126
|
-
#
|
|
127
|
-
# @example Return the key for group
|
|
128
|
-
# loader.group_by_key
|
|
129
|
-
#
|
|
130
|
-
# @return [ Symbol ] Key to group by the current documents.
|
|
131
|
-
#
|
|
132
|
-
# @since 4.0.0
|
|
133
|
-
def group_by_key
|
|
134
|
-
raise NotImplementedError
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
protected
|
|
138
|
-
# Set the pre-loaded document into its parent.
|
|
139
|
-
#
|
|
140
|
-
# @example Set docs into parent using the current relation name.
|
|
141
|
-
# loader.set_relation(doc, docs)
|
|
142
|
-
#
|
|
143
|
-
# @param [ Document ] doc
|
|
144
|
-
# @param [ Document, Array ] element to set into the parent
|
|
145
|
-
#
|
|
146
|
-
# @since 4.0.0
|
|
147
|
-
def set_relation(doc, element)
|
|
148
|
-
doc.set_relation(@metadata.name, element) unless doc.blank?
|
|
149
|
-
end
|
|
150
|
-
end
|
|
151
|
-
end
|
|
152
|
-
end
|
|
153
|
-
end
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid
|
|
3
|
-
module Relations
|
|
4
|
-
module Eager
|
|
5
|
-
|
|
6
|
-
class BelongsTo < Base
|
|
7
|
-
|
|
8
|
-
def preload
|
|
9
|
-
raise Errors::EagerLoad.new(@metadata.name) if @metadata.polymorphic?
|
|
10
|
-
|
|
11
|
-
@docs.each do |d|
|
|
12
|
-
set_relation(d, nil)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
each_loaded_document do |doc|
|
|
16
|
-
id = doc.send(key)
|
|
17
|
-
set_on_parent(id, doc)
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def group_by_key
|
|
22
|
-
@metadata.foreign_key
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def key
|
|
26
|
-
@metadata.primary_key
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid
|
|
3
|
-
module Relations
|
|
4
|
-
module Eager
|
|
5
|
-
|
|
6
|
-
class HasAndBelongsToMany < Base
|
|
7
|
-
|
|
8
|
-
def preload
|
|
9
|
-
@docs.each do |d|
|
|
10
|
-
set_relation(d, [])
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
entries = {}
|
|
14
|
-
each_loaded_document do |doc|
|
|
15
|
-
entries[doc.send(key)] = doc
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
@docs.each do |d|
|
|
19
|
-
keys = d.send(group_by_key)
|
|
20
|
-
docs = entries.values_at(*keys).compact
|
|
21
|
-
set_relation(d, docs)
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def keys_from_docs
|
|
26
|
-
keys = Set.new
|
|
27
|
-
@docs.each do |d|
|
|
28
|
-
keys += d.send(group_by_key)
|
|
29
|
-
end
|
|
30
|
-
keys.to_a
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def set_relation(doc, element)
|
|
34
|
-
doc.__build__(@metadata.name, element, @metadata) unless doc.blank?
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def group_by_key
|
|
38
|
-
@metadata.foreign_key
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def key
|
|
42
|
-
@metadata.primary_key
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid
|
|
3
|
-
module Relations
|
|
4
|
-
module Eager
|
|
5
|
-
|
|
6
|
-
class HasMany < Base
|
|
7
|
-
|
|
8
|
-
def preload
|
|
9
|
-
@docs.each do |d|
|
|
10
|
-
set_relation(d, [])
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
entries = Hash.new { |hash, key| hash[key] = [] }
|
|
14
|
-
each_loaded_document do |doc|
|
|
15
|
-
fk = doc.send(key)
|
|
16
|
-
entries[fk] << doc
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
entries.each do |id, docs|
|
|
20
|
-
set_on_parent(id, docs)
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def set_relation(doc, element)
|
|
25
|
-
doc.__build__(@metadata.name, element, @metadata) unless doc.blank?
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def group_by_key
|
|
29
|
-
@metadata.primary_key
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def key
|
|
33
|
-
@metadata.foreign_key
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid
|
|
3
|
-
module Relations
|
|
4
|
-
module Eager
|
|
5
|
-
|
|
6
|
-
class HasOne < Base
|
|
7
|
-
|
|
8
|
-
def preload
|
|
9
|
-
@docs.each do |d|
|
|
10
|
-
set_relation(d, nil)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
each_loaded_document do |doc|
|
|
14
|
-
id = doc.send(key)
|
|
15
|
-
set_on_parent(id, doc)
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def group_by_key
|
|
20
|
-
@metadata.primary_key
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def key
|
|
24
|
-
@metadata.foreign_key
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|