mongoid 6.4.8 → 7.0.0
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
- checksums.yaml.gz.sig +0 -0
- data/Rakefile +0 -26
- 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 +116 -0
- data/lib/mongoid/{relations/eager.rb → association/eager_loadable.rb} +11 -11
- data/lib/mongoid/{relations → association}/embedded/batchable.rb +21 -21
- 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 +529 -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 +20 -50
- 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 +159 -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_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 +415 -0
- data/lib/mongoid/association/touchable.rb +97 -0
- data/lib/mongoid/association.rb +150 -0
- 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 +10 -10
- 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 +1 -1
- data/lib/mongoid/clients/sessions.rb +2 -2
- data/lib/mongoid/composable.rb +4 -4
- data/lib/mongoid/config.rb +1 -0
- data/lib/mongoid/contextual/aggregable/mongo.rb +1 -1
- data/lib/mongoid/contextual/atomic.rb +1 -1
- data/lib/mongoid/contextual/geo_near.rb +1 -1
- data/lib/mongoid/contextual/map_reduce.rb +4 -4
- data/lib/mongoid/contextual/memory.rb +25 -7
- data/lib/mongoid/contextual/mongo.rb +13 -11
- data/lib/mongoid/copyable.rb +6 -6
- data/lib/mongoid/criteria/includable.rb +14 -14
- data/lib/mongoid/criteria/modifiable.rb +8 -14
- 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 +10 -34
- data/lib/mongoid/criteria.rb +2 -2
- data/lib/mongoid/document.rb +6 -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 +0 -1
- data/lib/mongoid/extensions/string.rb +1 -3
- 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 +8 -5
- 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.rb +0 -3
- data/lib/mongoid/persistable/creatable.rb +2 -2
- data/lib/mongoid/persistable/deletable.rb +9 -8
- 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 -1
- data/lib/mongoid/persistable.rb +5 -6
- data/lib/mongoid/persistence_context.rb +1 -5
- data/lib/mongoid/query_cache.rb +19 -64
- 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 +4 -4
- data/lib/mongoid/shardable.rb +1 -1
- data/lib/mongoid/tasks/database.rb +2 -2
- data/lib/mongoid/threaded.rb +0 -36
- 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/mongoid.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/person.rb +5 -2
- data/spec/app/models/shipment_address.rb +1 -0
- 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/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 -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 +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} +26 -11
- data/spec/mongoid/{relations/targets → association/referenced/has_many}/enumerable_spec.rb +122 -1
- 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 +2 -2
- data/spec/mongoid/atomic_spec.rb +4 -4
- data/spec/mongoid/attributes/nested_spec.rb +14 -12
- data/spec/mongoid/attributes/readonly_spec.rb +80 -125
- data/spec/mongoid/attributes_spec.rb +38 -2
- data/spec/mongoid/clients/factory_spec.rb +28 -52
- data/spec/mongoid/clients/options_spec.rb +65 -69
- data/spec/mongoid/clients/sessions_spec.rb +4 -13
- data/spec/mongoid/config_spec.rb +24 -0
- data/spec/mongoid/contextual/geo_near_spec.rb +0 -1
- data/spec/mongoid/contextual/memory_spec.rb +19 -0
- data/spec/mongoid/contextual/mongo_spec.rb +30 -5
- data/spec/mongoid/copyable_spec.rb +34 -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 +3 -42
- 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/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 +0 -23
- data/spec/mongoid/extensions/string_spec.rb +7 -35
- 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_spec.rb +1 -26
- 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 +1 -35
- data/spec/mongoid/persistable_spec.rb +21 -6
- data/spec/mongoid/query_cache_spec.rb +16 -99
- data/spec/mongoid/relations/proxy_spec.rb +124 -124
- data/spec/mongoid/scopable_spec.rb +0 -13
- data/spec/mongoid/shardable_spec.rb +32 -12
- 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 +12 -14
- data.tar.gz.sig +1 -1
- metadata +192 -207
- metadata.gz.sig +0 -0
- data/lib/mongoid/matchable/nor.rb +0 -37
- data/lib/mongoid/railties/controller_runtime.rb +0 -86
- 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/lib/mongoid/relations.rb +0 -148
- 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/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
- /data/spec/mongoid/{relations → association}/embedded/dirty_spec.rb +0 -0
data/lib/mongoid/matchable.rb
CHANGED
|
@@ -11,7 +11,6 @@ require "mongoid/matchable/lte"
|
|
|
11
11
|
require "mongoid/matchable/ne"
|
|
12
12
|
require "mongoid/matchable/nin"
|
|
13
13
|
require "mongoid/matchable/or"
|
|
14
|
-
require "mongoid/matchable/nor"
|
|
15
14
|
require "mongoid/matchable/size"
|
|
16
15
|
require "mongoid/matchable/elem_match"
|
|
17
16
|
require "mongoid/matchable/regexp"
|
|
@@ -41,7 +40,6 @@ module Mongoid
|
|
|
41
40
|
"$ne" => Ne,
|
|
42
41
|
"$nin" => Nin,
|
|
43
42
|
"$or" => Or,
|
|
44
|
-
"$nor" => Nor,
|
|
45
43
|
"$size" => Size
|
|
46
44
|
}.with_indifferent_access.freeze
|
|
47
45
|
|
|
@@ -126,7 +124,6 @@ module Mongoid
|
|
|
126
124
|
case key.to_s
|
|
127
125
|
when "$or" then Or.new(value, document)
|
|
128
126
|
when "$and" then And.new(value, document)
|
|
129
|
-
when "$nor" then Nor.new(value, document)
|
|
130
127
|
else Default.new(extract_attribute(document, key))
|
|
131
128
|
end
|
|
132
129
|
end
|
|
@@ -63,7 +63,7 @@ module Mongoid
|
|
|
63
63
|
selector = _parent.atomic_selector
|
|
64
64
|
_root.collection.find(selector).update_one(
|
|
65
65
|
positionally(selector, atomic_inserts),
|
|
66
|
-
session:
|
|
66
|
+
session: session)
|
|
67
67
|
end
|
|
68
68
|
end
|
|
69
69
|
|
|
@@ -78,7 +78,7 @@ module Mongoid
|
|
|
78
78
|
#
|
|
79
79
|
# @since 4.0.0
|
|
80
80
|
def insert_as_root
|
|
81
|
-
collection.insert_one(as_attributes, session:
|
|
81
|
+
collection.insert_one(as_attributes, session: session)
|
|
82
82
|
end
|
|
83
83
|
|
|
84
84
|
# Post process an insert, which sets the new record attribute to false
|
|
@@ -21,10 +21,12 @@ module Mongoid
|
|
|
21
21
|
def delete(options = {})
|
|
22
22
|
raise Errors::ReadonlyDocument.new(self.class) if readonly?
|
|
23
23
|
prepare_delete do
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
unless options[:persist] == false
|
|
25
|
+
if embedded?
|
|
26
|
+
delete_as_embedded(options)
|
|
27
|
+
else
|
|
28
|
+
delete_as_root
|
|
29
|
+
end
|
|
28
30
|
end
|
|
29
31
|
end
|
|
30
32
|
end
|
|
@@ -64,7 +66,7 @@ module Mongoid
|
|
|
64
66
|
selector = _parent.atomic_selector
|
|
65
67
|
_root.collection.find(selector).update_one(
|
|
66
68
|
positionally(selector, atomic_deletes),
|
|
67
|
-
session:
|
|
69
|
+
session: session)
|
|
68
70
|
end
|
|
69
71
|
true
|
|
70
72
|
end
|
|
@@ -80,7 +82,7 @@ module Mongoid
|
|
|
80
82
|
#
|
|
81
83
|
# @since 4.0.0
|
|
82
84
|
def delete_as_root
|
|
83
|
-
collection.find(atomic_selector).delete_one(session:
|
|
85
|
+
collection.find(atomic_selector).delete_one(session: session)
|
|
84
86
|
true
|
|
85
87
|
end
|
|
86
88
|
|
|
@@ -113,11 +115,10 @@ module Mongoid
|
|
|
113
115
|
#
|
|
114
116
|
# @since 4.0.0
|
|
115
117
|
def prepare_delete
|
|
116
|
-
|
|
118
|
+
return false unless catch(:abort) { apply_delete_dependencies! }
|
|
117
119
|
yield(self)
|
|
118
120
|
freeze
|
|
119
121
|
self.destroyed = true
|
|
120
|
-
true
|
|
121
122
|
end
|
|
122
123
|
|
|
123
124
|
module ClassMethods
|
|
@@ -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), session:
|
|
137
|
+
coll.find(selector).update_one(positionally(selector, updates), session: session)
|
|
138
138
|
conflicts.each_pair do |key, value|
|
|
139
|
-
coll.find(selector).update_one(positionally(selector, { key => value }), session:
|
|
139
|
+
coll.find(selector).update_one(positionally(selector, { key => value }), session: session)
|
|
140
140
|
end
|
|
141
141
|
end
|
|
142
142
|
end
|
data/lib/mongoid/persistable.rb
CHANGED
|
@@ -162,10 +162,9 @@ module Mongoid
|
|
|
162
162
|
# @since 4.0.0
|
|
163
163
|
def process_atomic_operations(operations)
|
|
164
164
|
operations.each do |field, value|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
end
|
|
165
|
+
access = database_field_name(field)
|
|
166
|
+
yield(access, value)
|
|
167
|
+
remove_change(access)
|
|
169
168
|
end
|
|
170
169
|
end
|
|
171
170
|
|
|
@@ -202,9 +201,9 @@ module Mongoid
|
|
|
202
201
|
#
|
|
203
202
|
# @since 4.0.0
|
|
204
203
|
def persist_atomic_operations(operations)
|
|
205
|
-
if persisted? && operations
|
|
204
|
+
if persisted? && operations && !operations.empty?
|
|
206
205
|
selector = atomic_selector
|
|
207
|
-
_root.collection.find(selector).update_one(positionally(selector, operations), session:
|
|
206
|
+
_root.collection.find(selector).update_one(positionally(selector, operations), session: session)
|
|
208
207
|
end
|
|
209
208
|
end
|
|
210
209
|
end
|
|
@@ -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))
|
|
@@ -212,7 +208,7 @@ 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
|
|
211
|
+
ensure
|
|
216
212
|
Thread.current["[mongoid][#{object.object_id}]:context"] = nil
|
|
217
213
|
end
|
|
218
214
|
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,20 @@ 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
|
-
|
|
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
|
|
224
|
+
unless cursor = cached_cursor
|
|
225
|
+
read_with_retry do
|
|
226
|
+
server = server_selector.select_server(cluster)
|
|
227
|
+
cursor = CachedCursor.new(view, send_initial_query(server), server)
|
|
228
|
+
QueryCache.cache_table[cache_key] = cursor
|
|
254
229
|
end
|
|
255
|
-
else
|
|
256
|
-
@cursor.to_enum
|
|
257
230
|
end
|
|
231
|
+
cursor.each do |doc|
|
|
232
|
+
yield doc
|
|
233
|
+
end if block_given?
|
|
234
|
+
cursor
|
|
258
235
|
end
|
|
259
236
|
end
|
|
260
237
|
|
|
@@ -264,28 +241,12 @@ module Mongoid
|
|
|
264
241
|
if limit
|
|
265
242
|
key = [ collection.namespace, selector, nil, skip, sort, projection, collation ]
|
|
266
243
|
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)
|
|
244
|
+
if cursor
|
|
245
|
+
limited_docs = cursor.to_a[0...limit.abs]
|
|
246
|
+
cursor.instance_variable_set(:@cached_documents, limited_docs)
|
|
285
247
|
end
|
|
286
248
|
end
|
|
287
|
-
|
|
288
|
-
cursor
|
|
249
|
+
cursor || QueryCache.cache_table[cache_key]
|
|
289
250
|
end
|
|
290
251
|
|
|
291
252
|
def cache_key
|
|
@@ -295,12 +256,6 @@ module Mongoid
|
|
|
295
256
|
def system_collection?
|
|
296
257
|
collection.namespace =~ /^system./
|
|
297
258
|
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
259
|
end
|
|
305
260
|
|
|
306
261
|
# 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({ _id: _id }, session:
|
|
61
|
+
{}.merge(collection.find({ _id: _id }, session: session).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
|
@@ -101,7 +101,7 @@ module Mongoid
|
|
|
101
101
|
value = send(name)
|
|
102
102
|
attrs[name] = value ? value.serializable_hash(options) : nil
|
|
103
103
|
elsif names.include?(name) && !fields.key?(name)
|
|
104
|
-
attrs[name] =
|
|
104
|
+
attrs[name] = read_raw_attribute(name)
|
|
105
105
|
elsif !attribute_missing?(name)
|
|
106
106
|
attrs[name] = send(name)
|
|
107
107
|
end
|
|
@@ -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
|
data/lib/mongoid/shardable.rb
CHANGED
|
@@ -44,7 +44,7 @@ module Mongoid
|
|
|
44
44
|
models.each do |model|
|
|
45
45
|
unless model.embedded?
|
|
46
46
|
begin
|
|
47
|
-
model.collection.indexes(session: model.send(:
|
|
47
|
+
model.collection.indexes(session: model.send(:session)).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(session: model.send(:
|
|
80
|
+
collection.indexes(session: model.send(:session)).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}'."
|
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?
|
data/lib/mongoid/traversable.rb
CHANGED
|
@@ -8,7 +8,7 @@ module Mongoid
|
|
|
8
8
|
extend ActiveSupport::Concern
|
|
9
9
|
|
|
10
10
|
def _parent
|
|
11
|
-
@__parent
|
|
11
|
+
@__parent ||= nil
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
def _parent=(p)
|
|
@@ -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
|
|
@@ -62,8 +62,8 @@ module Mongoid
|
|
|
62
62
|
# @since 3.0.0
|
|
63
63
|
def relation_or_fk_missing?(doc, attr, value)
|
|
64
64
|
return true if value.blank? && doc.send(attr).blank?
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
association = doc.relations[attr.to_s]
|
|
66
|
+
association.stores_foreign_key? && doc.send(association.foreign_key).blank?
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
# For guarding against false values.
|
|
@@ -224,9 +224,9 @@ module Mongoid
|
|
|
224
224
|
#
|
|
225
225
|
# @since 2.4.4
|
|
226
226
|
def to_validate(document, attribute, value)
|
|
227
|
-
|
|
228
|
-
if
|
|
229
|
-
[
|
|
227
|
+
association = document.relations[attribute.to_s]
|
|
228
|
+
if association && association.stores_foreign_key?
|
|
229
|
+
[ association.foreign_key, value && value._id ]
|
|
230
230
|
else
|
|
231
231
|
[ attribute, value ]
|
|
232
232
|
end
|
|
@@ -246,7 +246,7 @@ module Mongoid
|
|
|
246
246
|
# @since 2.4.10
|
|
247
247
|
def validate_embedded(document, attribute, value)
|
|
248
248
|
return if skip_validation?(document)
|
|
249
|
-
relation = document._parent.send(document.
|
|
249
|
+
relation = document._parent.send(document.association_name)
|
|
250
250
|
criteria = create_criteria(relation, document, attribute, value)
|
|
251
251
|
criteria = criteria.merge(options[:conditions].call) if options[:conditions]
|
|
252
252
|
add_error(document, attribute, value) if criteria.count > 1
|
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
|
data/lib/mongoid/version.rb
CHANGED
data/lib/mongoid.rb
CHANGED
|
@@ -101,5 +101,5 @@ module Mongoid
|
|
|
101
101
|
# Mongoid.database = Mongo::Connection.new.db("test")
|
|
102
102
|
#
|
|
103
103
|
# @since 1.0.0
|
|
104
|
-
delegate(*(Config.public_instance_methods(false) - [ :logger=, :logger ]
|
|
104
|
+
delegate(*(Config.public_instance_methods(false) - [ :logger=, :logger ] << { to: Config }))
|
|
105
105
|
end
|
|
@@ -149,6 +149,9 @@ development:
|
|
|
149
149
|
# Application name that is printed to the mongodb logs upon establishing a
|
|
150
150
|
# connection in server versions >= 3.4. Note that the name cannot exceed 128 bytes.
|
|
151
151
|
# app_name: MyApplicationName
|
|
152
|
+
|
|
153
|
+
# Use background indexes by default if `background` option not specified. (default: false)
|
|
154
|
+
# background_indexing: false
|
|
152
155
|
test:
|
|
153
156
|
clients:
|
|
154
157
|
default:
|
data/spec/app/models/animal.rb
CHANGED
|
@@ -9,7 +9,8 @@ class Animal
|
|
|
9
9
|
field :tags, type: Array
|
|
10
10
|
|
|
11
11
|
embedded_in :person
|
|
12
|
-
embedded_in :circus
|
|
12
|
+
embedded_in :circus, class_name: 'Circus' # class_name is necessary because ActiveRecord think the singular of Circus
|
|
13
|
+
# is Circu
|
|
13
14
|
|
|
14
15
|
validates_format_of :name, without: /\$\$\$/
|
|
15
16
|
|
data/spec/app/models/bomb.rb
CHANGED
data/spec/app/models/message.rb
CHANGED
data/spec/app/models/person.rb
CHANGED
|
@@ -85,7 +85,7 @@ class Person
|
|
|
85
85
|
|
|
86
86
|
has_many \
|
|
87
87
|
:posts,
|
|
88
|
-
dependent: :
|
|
88
|
+
dependent: :delete_all,
|
|
89
89
|
validate: false do
|
|
90
90
|
def extension
|
|
91
91
|
"Testing"
|
|
@@ -105,7 +105,7 @@ class Person
|
|
|
105
105
|
has_one :account, validate: false
|
|
106
106
|
has_one :cat, dependent: :nullify, validate: false, primary_key: :username
|
|
107
107
|
has_one :book, autobuild: true, validate: false
|
|
108
|
-
has_one :home, dependent: :
|
|
108
|
+
has_one :home, dependent: :delete_all, validate: false
|
|
109
109
|
|
|
110
110
|
has_and_belongs_to_many \
|
|
111
111
|
:administrated_events,
|
|
@@ -114,6 +114,9 @@ class Person
|
|
|
114
114
|
dependent: :nullify,
|
|
115
115
|
validate: false
|
|
116
116
|
|
|
117
|
+
belongs_to :mother, class_name: 'Person'
|
|
118
|
+
has_many :children, class_name: 'Person'
|
|
119
|
+
|
|
117
120
|
accepts_nested_attributes_for :addresses
|
|
118
121
|
accepts_nested_attributes_for :name, update_only: true
|
|
119
122
|
accepts_nested_attributes_for :pet, allow_destroy: true
|