mongoid 6.4.8 → 7.0.0.beta
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 +5 -5
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Rakefile +0 -26
- data/lib/config/locales/en.yml +17 -21
- data/lib/mongoid.rb +2 -2
- data/lib/mongoid/association.rb +150 -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 +116 -0
- data/lib/mongoid/{relations/eager.rb → association/eager_loadable.rb} +11 -11
- data/lib/mongoid/association/embedded.rb +4 -0
- data/lib/mongoid/{relations → association}/embedded/batchable.rb +27 -53
- data/lib/mongoid/association/embedded/cyclic.rb +109 -0
- data/lib/mongoid/association/embedded/embedded_in.rb +154 -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/embeds_many.rb +210 -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 +529 -0
- data/lib/mongoid/association/embedded/embeds_one.rb +173 -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/macros.rb +204 -0
- data/lib/mongoid/{relations → association}/many.rb +18 -52
- data/lib/mongoid/{relations → association}/marshalable.rb +6 -4
- data/lib/mongoid/association/nested.rb +15 -0
- 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/{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.rb +7 -0
- data/lib/mongoid/association/referenced/auto_save.rb +79 -0
- data/lib/mongoid/association/referenced/belongs_to.rb +248 -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/counter_cache.rb +163 -0
- data/lib/mongoid/association/referenced/eager.rb +159 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +290 -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 +310 -0
- data/lib/mongoid/association/referenced/has_many.rb +273 -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 +479 -0
- data/lib/mongoid/association/referenced/has_many/proxy.rb +577 -0
- data/lib/mongoid/association/referenced/has_one.rb +204 -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/syncable.rb +170 -0
- data/lib/mongoid/{relations → association}/reflections.rb +21 -17
- data/lib/mongoid/association/relatable.rb +415 -0
- data/lib/mongoid/association/touchable.rb +97 -0
- data/lib/mongoid/atomic.rb +6 -6
- data/lib/mongoid/atomic/modifiers.rb +8 -12
- data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
- data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
- data/lib/mongoid/attributes.rb +2 -1
- data/lib/mongoid/attributes/nested.rb +10 -10
- data/lib/mongoid/attributes/processing.rb +2 -2
- data/lib/mongoid/attributes/readonly.rb +2 -4
- data/lib/mongoid/clients.rb +0 -2
- data/lib/mongoid/clients/options.rb +1 -1
- data/lib/mongoid/clients/storage_options.rb +0 -1
- data/lib/mongoid/composable.rb +3 -4
- data/lib/mongoid/config.rb +1 -0
- data/lib/mongoid/contextual/aggregable/mongo.rb +1 -1
- data/lib/mongoid/contextual/atomic.rb +3 -6
- data/lib/mongoid/contextual/map_reduce.rb +3 -7
- data/lib/mongoid/contextual/memory.rb +5 -10
- data/lib/mongoid/contextual/mongo.rb +10 -27
- data/lib/mongoid/copyable.rb +6 -6
- data/lib/mongoid/criteria.rb +1 -2
- data/lib/mongoid/criteria/includable.rb +14 -14
- data/lib/mongoid/criteria/modifiable.rb +8 -14
- data/lib/mongoid/criteria/queryable/mergeable.rb +1 -3
- data/lib/mongoid/criteria/queryable/pipeline.rb +10 -5
- data/lib/mongoid/criteria/queryable/selectable.rb +10 -34
- data/lib/mongoid/document.rb +6 -6
- data/lib/mongoid/errors.rb +3 -1
- 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/extensions/array.rb +5 -5
- data/lib/mongoid/extensions/big_decimal.rb +1 -1
- data/lib/mongoid/extensions/object.rb +4 -4
- data/lib/mongoid/extensions/range.rb +1 -0
- data/lib/mongoid/extensions/regexp.rb +0 -1
- data/lib/mongoid/extensions/string.rb +1 -3
- data/lib/mongoid/factory.rb +4 -3
- data/lib/mongoid/fields.rb +1 -1
- 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/indexable.rb +8 -5
- data/lib/mongoid/interceptable.rb +5 -5
- data/lib/mongoid/matchable.rb +0 -3
- data/lib/mongoid/persistable.rb +4 -5
- data/lib/mongoid/persistable/creatable.rb +2 -4
- data/lib/mongoid/persistable/deletable.rb +9 -10
- data/lib/mongoid/persistable/destroyable.rb +5 -1
- data/lib/mongoid/persistable/incrementable.rb +1 -1
- data/lib/mongoid/persistable/logical.rb +1 -1
- data/lib/mongoid/persistable/settable.rb +5 -5
- data/lib/mongoid/persistable/updatable.rb +2 -2
- data/lib/mongoid/persistable/upsertable.rb +1 -2
- data/lib/mongoid/persistence_context.rb +4 -9
- data/lib/mongoid/query_cache.rb +18 -65
- data/lib/mongoid/railtie.rb +0 -17
- data/lib/mongoid/reloadable.rb +1 -1
- data/lib/mongoid/scopable.rb +3 -3
- data/lib/mongoid/serializable.rb +3 -3
- data/lib/mongoid/tasks/database.rb +2 -3
- data/lib/mongoid/threaded.rb +0 -74
- data/lib/mongoid/traversable.rb +2 -2
- data/lib/mongoid/validatable.rb +8 -8
- data/lib/mongoid/validatable/presence.rb +2 -2
- data/lib/mongoid/validatable/uniqueness.rb +4 -4
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +3 -4
- data/spec/app/models/animal.rb +2 -1
- data/spec/app/models/band.rb +0 -1
- data/spec/app/models/bomb.rb +1 -1
- data/spec/app/models/message.rb +1 -1
- data/spec/app/models/person.rb +5 -2
- data/spec/app/models/vertex.rb +6 -0
- data/spec/app/models/wiki_page.rb +1 -1
- data/spec/config/mongoid.yml +1 -0
- data/spec/mongoid/{relations → association}/accessors_spec.rb +1 -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 +613 -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 → association}/embedded/dirty_spec.rb +0 -0
- 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} +140 -428
- 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 -93
- 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 +7 -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} +9 -9
- 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 +1963 -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} +5 -5
- 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_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} +11 -11
- data/spec/mongoid/{relations/targets → association/referenced/has_many}/enumerable_spec.rb +1 -109
- data/spec/mongoid/{relations/referenced/many_spec.rb → association/referenced/has_many/proxy_spec.rb} +28 -93
- 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_spec.rb +1244 -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 → association}/touchable_spec.rb +19 -1
- data/spec/mongoid/{relations_spec.rb → association_spec.rb} +1 -1
- data/spec/mongoid/atomic/modifiers_spec.rb +17 -17
- data/spec/mongoid/atomic_spec.rb +17 -17
- data/spec/mongoid/attributes/nested_spec.rb +14 -12
- data/spec/mongoid/attributes/readonly_spec.rb +80 -125
- data/spec/mongoid/clients/factory_spec.rb +28 -52
- data/spec/mongoid/clients/options_spec.rb +65 -69
- data/spec/mongoid/config_spec.rb +24 -0
- data/spec/mongoid/contextual/geo_near_spec.rb +0 -1
- data/spec/mongoid/contextual/mongo_spec.rb +4 -112
- 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/pipeline_spec.rb +12 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +6 -74
- data/spec/mongoid/criteria/queryable/selector_spec.rb +2 -2
- data/spec/mongoid/criteria/scopable_spec.rb +0 -81
- data/spec/mongoid/criteria_spec.rb +16 -19
- data/spec/mongoid/document_spec.rb +2 -56
- data/spec/mongoid/extensions/array_spec.rb +11 -15
- data/spec/mongoid/extensions/big_decimal_spec.rb +9 -9
- 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 +0 -23
- data/spec/mongoid/extensions/string_spec.rb +7 -35
- data/spec/mongoid/factory_spec.rb +18 -11
- 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 +21 -2
- data/spec/mongoid/matchable_spec.rb +1 -26
- data/spec/mongoid/persistable/deletable_spec.rb +0 -19
- data/spec/mongoid/persistable/destroyable_spec.rb +0 -19
- data/spec/mongoid/persistable/incrementable_spec.rb +6 -6
- data/spec/mongoid/persistable/savable_spec.rb +3 -3
- data/spec/mongoid/persistable/settable_spec.rb +1 -35
- data/spec/mongoid/persistable/updatable_spec.rb +2 -2
- data/spec/mongoid/persistable_spec.rb +16 -16
- data/spec/mongoid/persistence_context_spec.rb +0 -14
- data/spec/mongoid/positional_spec.rb +10 -10
- data/spec/mongoid/query_cache_spec.rb +18 -87
- data/spec/mongoid/relations/proxy_spec.rb +124 -124
- data/spec/mongoid/scopable_spec.rb +0 -13
- data/spec/mongoid/threaded_spec.rb +0 -68
- 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/spec_helper.rb +7 -83
- metadata +586 -611
- metadata.gz.sig +2 -5
- data/lib/mongoid/clients/sessions.rb +0 -113
- data/lib/mongoid/errors/invalid_session_use.rb +0 -24
- data/lib/mongoid/matchable/nor.rb +0 -37
- data/lib/mongoid/railties/controller_runtime.rb +0 -86
- data/lib/mongoid/relations.rb +0 -148
- data/lib/mongoid/relations/accessors.rb +0 -267
- data/lib/mongoid/relations/auto_save.rb +0 -94
- data/lib/mongoid/relations/bindings.rb +0 -9
- 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/builder.rb +0 -57
- data/lib/mongoid/relations/builders.rb +0 -106
- 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/cascading.rb +0 -56
- 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/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.rb +0 -2
- data/lib/mongoid/relations/targets/enumerable.rb +0 -493
- data/lib/mongoid/relations/touchable.rb +0 -97
- data/spec/app/models/array_field.rb +0 -7
- data/spec/app/models/delegating_patient.rb +0 -16
- data/spec/integration/document_spec.rb +0 -22
- data/spec/mongoid/clients/sessions_spec.rb +0 -334
- 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/matchable/nor_spec.rb +0 -209
- 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/spec/rails/controller_extension/controller_runtime_spec.rb +0 -110
- data/spec/support/cluster_config.rb +0 -158
- data/spec/support/constraints.rb +0 -101
- data/spec/support/macros.rb +0 -20
- data/spec/support/session_registry.rb +0 -50
- data/spec/support/spec_config.rb +0 -42
|
@@ -48,7 +48,11 @@ module Mongoid
|
|
|
48
48
|
#
|
|
49
49
|
# @since 1.0.0
|
|
50
50
|
def destroy_all(conditions = nil)
|
|
51
|
-
|
|
51
|
+
selector = conditions || {}
|
|
52
|
+
documents = where(selector)
|
|
53
|
+
destroyed = documents.count
|
|
54
|
+
documents.each { |doc| doc.destroy }
|
|
55
|
+
destroyed
|
|
52
56
|
end
|
|
53
57
|
end
|
|
54
58
|
end
|
|
@@ -25,15 +25,15 @@ module Mongoid
|
|
|
25
25
|
|
|
26
26
|
field_and_value_hash = hasherizer(field.split('.'), value)
|
|
27
27
|
field = field_and_value_hash.keys.first.to_s
|
|
28
|
-
value = field_and_value_hash[field]
|
|
29
28
|
|
|
30
|
-
if fields[field] && fields[field].type == Hash && attributes.key?(field)
|
|
29
|
+
if fields[field] && fields[field].type == Hash && attributes.key?(field)
|
|
31
30
|
merger = proc { |key, v1, v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : v2 }
|
|
32
|
-
value = (attributes[field] || {}).merge(
|
|
31
|
+
value = (attributes[field] || {}).merge(field_and_value_hash[field], &merger)
|
|
32
|
+
process_attribute(field.to_s, value)
|
|
33
|
+
else
|
|
34
|
+
process_attribute(field.to_s, field_and_value_hash[field])
|
|
33
35
|
end
|
|
34
36
|
|
|
35
|
-
process_attribute(field.to_s, value)
|
|
36
|
-
|
|
37
37
|
unless relations.include?(field.to_s)
|
|
38
38
|
ops[atomic_attribute_name(field)] = attributes[field]
|
|
39
39
|
end
|
|
@@ -134,9 +134,9 @@ module Mongoid
|
|
|
134
134
|
unless updates.empty?
|
|
135
135
|
coll = collection(_root)
|
|
136
136
|
selector = atomic_selector
|
|
137
|
-
coll.find(selector).update_one(positionally(selector, updates)
|
|
137
|
+
coll.find(selector).update_one(positionally(selector, updates))
|
|
138
138
|
conflicts.each_pair do |key, value|
|
|
139
|
-
coll.find(selector).update_one(positionally(selector, { key => value })
|
|
139
|
+
coll.find(selector).update_one(positionally(selector, { key => value }))
|
|
140
140
|
end
|
|
141
141
|
end
|
|
142
142
|
end
|
|
@@ -21,8 +21,7 @@ module Mongoid
|
|
|
21
21
|
# @since 3.0.0
|
|
22
22
|
def upsert(options = {})
|
|
23
23
|
prepare_upsert(options) do
|
|
24
|
-
collection.find(atomic_selector).update_one(
|
|
25
|
-
as_attributes, upsert: true, session: _session)
|
|
24
|
+
collection.find(atomic_selector).update_one(as_attributes, upsert: true)
|
|
26
25
|
end
|
|
27
26
|
end
|
|
28
27
|
|
|
@@ -107,10 +107,6 @@ module Mongoid
|
|
|
107
107
|
#
|
|
108
108
|
# @since 6.0.0
|
|
109
109
|
def client
|
|
110
|
-
client_options = send(:client_options)
|
|
111
|
-
if client_options[:read].is_a?(Symbol)
|
|
112
|
-
client_options = client_options.merge(read: {mode: client_options[:read]})
|
|
113
|
-
end
|
|
114
110
|
@client ||= (client = Clients.with_name(client_name)
|
|
115
111
|
client = client.use(database_name) if database_name_option
|
|
116
112
|
client.with(client_options))
|
|
@@ -199,10 +195,10 @@ module Mongoid
|
|
|
199
195
|
Thread.current["[mongoid][#{object.object_id}]:context"]
|
|
200
196
|
end
|
|
201
197
|
|
|
202
|
-
#
|
|
198
|
+
# Get the persistence context for a particular class or model instance.
|
|
203
199
|
#
|
|
204
|
-
# @example
|
|
205
|
-
# PersistenceContext.
|
|
200
|
+
# @example Get the persistence context for a class or model instance.
|
|
201
|
+
# PersistenceContext.get(model)
|
|
206
202
|
#
|
|
207
203
|
# @param [ Class, Object ] object The class or model instance.
|
|
208
204
|
# @param [ Mongo::Cluster ] cluster The original cluster before this context was used.
|
|
@@ -212,9 +208,8 @@ module Mongoid
|
|
|
212
208
|
if context = get(object)
|
|
213
209
|
context.client.close unless (context.cluster.equal?(cluster) || cluster.nil?)
|
|
214
210
|
end
|
|
215
|
-
ensure
|
|
216
211
|
Thread.current["[mongoid][#{object.object_id}]:context"] = nil
|
|
217
212
|
end
|
|
218
213
|
end
|
|
219
214
|
end
|
|
220
|
-
end
|
|
215
|
+
end
|
data/lib/mongoid/query_cache.rb
CHANGED
|
@@ -159,14 +159,11 @@ module Mongoid
|
|
|
159
159
|
private
|
|
160
160
|
|
|
161
161
|
def process(result)
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
end
|
|
168
|
-
|
|
169
|
-
@after_first_batch = true
|
|
162
|
+
@remaining -= result.returned_count if limited?
|
|
163
|
+
@cursor_id = result.cursor_id
|
|
164
|
+
@coll_name ||= result.namespace.sub("#{database.name}.", '') if result.namespace
|
|
165
|
+
documents = result.documents
|
|
166
|
+
(@cached_documents ||= []).concat(documents)
|
|
170
167
|
documents
|
|
171
168
|
end
|
|
172
169
|
end
|
|
@@ -221,40 +218,18 @@ module Mongoid
|
|
|
221
218
|
#
|
|
222
219
|
# @since 5.0.0
|
|
223
220
|
def each
|
|
224
|
-
if system_collection? || !QueryCache.enabled?
|
|
221
|
+
if system_collection? || !QueryCache.enabled?
|
|
225
222
|
super
|
|
226
223
|
else
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
session = client.send(:get_session, @options)
|
|
232
|
-
read_with_retry(session, server_selector) do |server|
|
|
233
|
-
result = send_initial_query(server, session)
|
|
234
|
-
@cursor = get_cursor(result, server, session)
|
|
235
|
-
end
|
|
236
|
-
else
|
|
237
|
-
read_with_retry do
|
|
238
|
-
server = server_selector.select_server(cluster)
|
|
239
|
-
result = send_initial_query(server)
|
|
240
|
-
@cursor = get_cursor(result, server)
|
|
241
|
-
end
|
|
242
|
-
end
|
|
243
|
-
end
|
|
244
|
-
|
|
245
|
-
if block_given?
|
|
246
|
-
if limit && limit != -1
|
|
247
|
-
@cursor.to_a[0...limit].each do |doc|
|
|
248
|
-
yield doc
|
|
249
|
-
end
|
|
250
|
-
else
|
|
251
|
-
@cursor.each do |doc|
|
|
252
|
-
yield doc
|
|
253
|
-
end
|
|
254
|
-
end
|
|
255
|
-
else
|
|
256
|
-
@cursor.to_enum
|
|
224
|
+
unless cursor = cached_cursor
|
|
225
|
+
server = read.select_server(cluster)
|
|
226
|
+
cursor = CachedCursor.new(view, send_initial_query(server), server)
|
|
227
|
+
QueryCache.cache_table[cache_key] = cursor
|
|
257
228
|
end
|
|
229
|
+
cursor.each do |doc|
|
|
230
|
+
yield doc
|
|
231
|
+
end if block_given?
|
|
232
|
+
cursor
|
|
258
233
|
end
|
|
259
234
|
end
|
|
260
235
|
|
|
@@ -264,28 +239,12 @@ module Mongoid
|
|
|
264
239
|
if limit
|
|
265
240
|
key = [ collection.namespace, selector, nil, skip, sort, projection, collation ]
|
|
266
241
|
cursor = QueryCache.cache_table[key]
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
def get_cursor(result, server, session = nil)
|
|
272
|
-
if result.cursor_id == 0 || result.cursor_id.nil?
|
|
273
|
-
cursor = if session
|
|
274
|
-
CachedCursor.new(view, result, server, session: session)
|
|
275
|
-
else
|
|
276
|
-
CachedCursor.new(view, result, server)
|
|
277
|
-
end
|
|
278
|
-
|
|
279
|
-
QueryCache.cache_table[cache_key] = cursor
|
|
280
|
-
else
|
|
281
|
-
cursor = if session
|
|
282
|
-
Mongo::Cursor.new(view, result, server, session: session)
|
|
283
|
-
else
|
|
284
|
-
Mongo::Cursor.new(view, result, server)
|
|
242
|
+
if cursor
|
|
243
|
+
limited_docs = cursor.to_a[0...limit.abs]
|
|
244
|
+
cursor.instance_variable_set(:@cached_documents, limited_docs)
|
|
285
245
|
end
|
|
286
246
|
end
|
|
287
|
-
|
|
288
|
-
cursor
|
|
247
|
+
cursor || QueryCache.cache_table[cache_key]
|
|
289
248
|
end
|
|
290
249
|
|
|
291
250
|
def cache_key
|
|
@@ -295,12 +254,6 @@ module Mongoid
|
|
|
295
254
|
def system_collection?
|
|
296
255
|
collection.namespace =~ /^system./
|
|
297
256
|
end
|
|
298
|
-
|
|
299
|
-
def driver_supports_cursor_sessions?
|
|
300
|
-
# Driver versions 2.9 and newer support passing in a session to the
|
|
301
|
-
# cursor object.
|
|
302
|
-
(Mongo::VERSION.split('.').map(&:to_i) <=> [2, 9, 0]) > 0
|
|
303
|
-
end
|
|
304
257
|
end
|
|
305
258
|
|
|
306
259
|
# Adds behaviour to the query cache for collections.
|
data/lib/mongoid/railtie.rb
CHANGED
|
@@ -102,23 +102,6 @@ module Rails
|
|
|
102
102
|
puts "There is a configuration error with the current mongoid.yml."
|
|
103
103
|
puts e.message
|
|
104
104
|
end
|
|
105
|
-
|
|
106
|
-
# Include Controller extension that measures Mongoid runtime
|
|
107
|
-
# during request processing. The value then appears in Rails'
|
|
108
|
-
# instrumentation event `process_action.action_controller`.
|
|
109
|
-
#
|
|
110
|
-
# The measurement is made via internal Mongo monitoring subscription
|
|
111
|
-
initializer "mongoid.runtime-metric" do
|
|
112
|
-
require "mongoid/railties/controller_runtime"
|
|
113
|
-
|
|
114
|
-
ActiveSupport.on_load :action_controller do
|
|
115
|
-
include ::Mongoid::Railties::ControllerRuntime::ControllerExtension
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
Mongo::Monitoring::Global.subscribe Mongo::Monitoring::COMMAND,
|
|
119
|
-
::Mongoid::Railties::ControllerRuntime::Collector.new
|
|
120
|
-
end
|
|
121
|
-
|
|
122
105
|
end
|
|
123
106
|
end
|
|
124
107
|
end
|
data/lib/mongoid/reloadable.rb
CHANGED
|
@@ -58,7 +58,7 @@ module Mongoid
|
|
|
58
58
|
#
|
|
59
59
|
# @since 2.3.2
|
|
60
60
|
def reload_root_document
|
|
61
|
-
{}.merge(collection.find(
|
|
61
|
+
{}.merge(collection.find(_id: _id).read(mode: :primary).first || {})
|
|
62
62
|
end
|
|
63
63
|
|
|
64
64
|
# Reload the embedded document.
|
data/lib/mongoid/scopable.rb
CHANGED
|
@@ -102,7 +102,7 @@ module Mongoid
|
|
|
102
102
|
#
|
|
103
103
|
# @since 3.0.0
|
|
104
104
|
def default_scopable?
|
|
105
|
-
default_scoping? && !Threaded.
|
|
105
|
+
default_scoping? && !Threaded.executing?(:without_default_scope)
|
|
106
106
|
end
|
|
107
107
|
|
|
108
108
|
# Get a queryable, either the last one on the scope stack or a fresh one.
|
|
@@ -244,10 +244,10 @@ module Mongoid
|
|
|
244
244
|
#
|
|
245
245
|
# @since 3.0.0
|
|
246
246
|
def without_default_scope
|
|
247
|
-
Threaded.
|
|
247
|
+
Threaded.begin_execution("without_default_scope")
|
|
248
248
|
yield
|
|
249
249
|
ensure
|
|
250
|
-
Threaded.
|
|
250
|
+
Threaded.exit_execution("without_default_scope")
|
|
251
251
|
end
|
|
252
252
|
|
|
253
253
|
private
|
data/lib/mongoid/serializable.rb
CHANGED
|
@@ -124,9 +124,9 @@ module Mongoid
|
|
|
124
124
|
def serialize_relations(attributes = {}, options = {})
|
|
125
125
|
inclusions = options[:include]
|
|
126
126
|
relation_names(inclusions).each do |name|
|
|
127
|
-
|
|
128
|
-
if
|
|
129
|
-
attributes[
|
|
127
|
+
association = relations[name.to_s]
|
|
128
|
+
if association && relation = send(association.name)
|
|
129
|
+
attributes[association.name.to_s] =
|
|
130
130
|
relation.serializable_hash(relation_options(inclusions, options, name))
|
|
131
131
|
end
|
|
132
132
|
end
|
|
@@ -44,7 +44,7 @@ module Mongoid
|
|
|
44
44
|
models.each do |model|
|
|
45
45
|
unless model.embedded?
|
|
46
46
|
begin
|
|
47
|
-
model.collection.indexes
|
|
47
|
+
model.collection.indexes.each do |index|
|
|
48
48
|
# ignore default index
|
|
49
49
|
unless index['name'] == '_id_'
|
|
50
50
|
key = index['key'].symbolize_keys
|
|
@@ -77,7 +77,7 @@ module Mongoid
|
|
|
77
77
|
indexes.each do |index|
|
|
78
78
|
key = index['key'].symbolize_keys
|
|
79
79
|
collection = model.collection
|
|
80
|
-
collection.indexes
|
|
80
|
+
collection.indexes.drop_one(key)
|
|
81
81
|
logger.info(
|
|
82
82
|
"MONGOID: Removed index '#{index['name']}' on collection " +
|
|
83
83
|
"'#{collection.name}' in database '#{collection.database.name}'."
|
|
@@ -107,7 +107,6 @@ module Mongoid
|
|
|
107
107
|
end
|
|
108
108
|
|
|
109
109
|
private
|
|
110
|
-
|
|
111
110
|
def logger
|
|
112
111
|
Mongoid.logger
|
|
113
112
|
end
|
data/lib/mongoid/threaded.rb
CHANGED
|
@@ -163,30 +163,6 @@ module Mongoid
|
|
|
163
163
|
validations_for(document.class).delete_one(document._id)
|
|
164
164
|
end
|
|
165
165
|
|
|
166
|
-
# Begin suppressing default scopes for given model on the current thread.
|
|
167
|
-
#
|
|
168
|
-
# @example Begin without default scope stack.
|
|
169
|
-
# Threaded.begin_without_default_scope(klass)
|
|
170
|
-
#
|
|
171
|
-
# @param [ Class ] klass The model to suppress default scoping on.
|
|
172
|
-
#
|
|
173
|
-
# @api private
|
|
174
|
-
def begin_without_default_scope(klass)
|
|
175
|
-
stack(:without_default_scope).push(klass)
|
|
176
|
-
end
|
|
177
|
-
|
|
178
|
-
# Exit suppressing default scopes for given model on the current thread.
|
|
179
|
-
#
|
|
180
|
-
# @example Exit without default scope stack.
|
|
181
|
-
# Threaded.exit_without_default_scope(klass)
|
|
182
|
-
#
|
|
183
|
-
# @param [ Class ] klass The model to unsuppress default scoping on.
|
|
184
|
-
#
|
|
185
|
-
# @api private
|
|
186
|
-
def exit_without_default_scope(klass)
|
|
187
|
-
stack(:without_default_scope).delete(klass)
|
|
188
|
-
end
|
|
189
|
-
|
|
190
166
|
# Get the global client override.
|
|
191
167
|
#
|
|
192
168
|
# @example Get the global client override.
|
|
@@ -271,18 +247,6 @@ module Mongoid
|
|
|
271
247
|
end
|
|
272
248
|
end
|
|
273
249
|
|
|
274
|
-
# Is the given klass' default scope suppressed on the current thread?
|
|
275
|
-
#
|
|
276
|
-
# @example Is the given klass' default scope suppressed?
|
|
277
|
-
# Threaded.without_default_scope?(klass)
|
|
278
|
-
#
|
|
279
|
-
# @param [ Class ] klass The model to check for default scope suppression.
|
|
280
|
-
#
|
|
281
|
-
# @api private
|
|
282
|
-
def without_default_scope?(klass)
|
|
283
|
-
stack(:without_default_scope).include?(klass)
|
|
284
|
-
end
|
|
285
|
-
|
|
286
250
|
# Is the document autosaved on the current thread?
|
|
287
251
|
#
|
|
288
252
|
# @example Is the document autosaved?
|
|
@@ -361,43 +325,5 @@ module Mongoid
|
|
|
361
325
|
def validations_for(klass)
|
|
362
326
|
validations[klass] ||= []
|
|
363
327
|
end
|
|
364
|
-
|
|
365
|
-
# Cache a session for this thread.
|
|
366
|
-
#
|
|
367
|
-
# @example Save a session for this thread.
|
|
368
|
-
# Threaded.set_session(session)
|
|
369
|
-
#
|
|
370
|
-
# @param [ Mongo::Session ] session The session to save.
|
|
371
|
-
#
|
|
372
|
-
# @since 6.4.0
|
|
373
|
-
def set_session(session)
|
|
374
|
-
Thread.current[:session] = session
|
|
375
|
-
end
|
|
376
|
-
|
|
377
|
-
# Get the cached session for this thread.
|
|
378
|
-
#
|
|
379
|
-
# @example Get the session for this thread.
|
|
380
|
-
# Threaded.get_session
|
|
381
|
-
#
|
|
382
|
-
# @return [ Mongo::Session, nil ] The session cached on this thread or nil.
|
|
383
|
-
#
|
|
384
|
-
# @since 6.4.0
|
|
385
|
-
def get_session
|
|
386
|
-
Thread.current[:session]
|
|
387
|
-
end
|
|
388
|
-
|
|
389
|
-
# Clear the cached session for this thread.
|
|
390
|
-
#
|
|
391
|
-
# @example Clear this thread's session.
|
|
392
|
-
# Threaded.clear_session
|
|
393
|
-
#
|
|
394
|
-
# @return [ nil ]
|
|
395
|
-
#
|
|
396
|
-
# @since 6.4.0
|
|
397
|
-
def clear_session
|
|
398
|
-
session = get_session
|
|
399
|
-
session.end_session if session
|
|
400
|
-
Thread.current[:session] = nil
|
|
401
|
-
end
|
|
402
328
|
end
|
|
403
329
|
end
|
data/lib/mongoid/traversable.rb
CHANGED
|
@@ -40,7 +40,7 @@ module Mongoid
|
|
|
40
40
|
# @since 2.4.0
|
|
41
41
|
def collect_children
|
|
42
42
|
children = []
|
|
43
|
-
embedded_relations.each_pair do |name,
|
|
43
|
+
embedded_relations.each_pair do |name, association|
|
|
44
44
|
without_autobuild do
|
|
45
45
|
child = send(name)
|
|
46
46
|
Array.wrap(child).each do |doc|
|
|
@@ -101,7 +101,7 @@ module Mongoid
|
|
|
101
101
|
#
|
|
102
102
|
# @since 2.0.0.beta.1
|
|
103
103
|
def remove_child(child)
|
|
104
|
-
name = child.
|
|
104
|
+
name = child.association_name
|
|
105
105
|
if child.embedded_one?
|
|
106
106
|
remove_ivar(name)
|
|
107
107
|
else
|
data/lib/mongoid/validatable.rb
CHANGED
|
@@ -127,14 +127,14 @@ module Mongoid
|
|
|
127
127
|
# was not provided or set to true.
|
|
128
128
|
#
|
|
129
129
|
# @example Set up validation.
|
|
130
|
-
# Person.validates_relation(
|
|
130
|
+
# Person.validates_relation(association)
|
|
131
131
|
#
|
|
132
|
-
# @param [
|
|
132
|
+
# @param [ Association ] association The association metadata.
|
|
133
133
|
#
|
|
134
134
|
# @since 2.0.0.rc.1
|
|
135
|
-
def validates_relation(
|
|
136
|
-
if
|
|
137
|
-
validates_associated(
|
|
135
|
+
def validates_relation(association)
|
|
136
|
+
if association.validate?
|
|
137
|
+
validates_associated(association.name)
|
|
138
138
|
end
|
|
139
139
|
end
|
|
140
140
|
|
|
@@ -154,9 +154,9 @@ module Mongoid
|
|
|
154
154
|
def validates_with(*args, &block)
|
|
155
155
|
if args.first == PresenceValidator
|
|
156
156
|
args.last[:attributes].each do |name|
|
|
157
|
-
|
|
158
|
-
if
|
|
159
|
-
|
|
157
|
+
association = relations[name.to_s]
|
|
158
|
+
if association && association.autosave?
|
|
159
|
+
Association::Referenced::AutoSave.define_autosave!(association)
|
|
160
160
|
end
|
|
161
161
|
end
|
|
162
162
|
end
|