mongoid 7.5.0 → 8.0.2
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/README.md +3 -3
- data/lib/config/locales/en.yml +47 -30
- data/lib/mongoid/association/accessors.rb +38 -9
- data/lib/mongoid/association/bindable.rb +50 -2
- data/lib/mongoid/association/builders.rb +4 -2
- data/lib/mongoid/association/constrainable.rb +0 -1
- data/lib/mongoid/association/eager_loadable.rb +29 -7
- data/lib/mongoid/association/embedded/batchable.rb +53 -13
- data/lib/mongoid/association/embedded/cyclic.rb +1 -1
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +24 -2
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +2 -2
- data/lib/mongoid/association/embedded/embedded_in.rb +3 -2
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +1 -0
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +1 -1
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +50 -28
- data/lib/mongoid/association/embedded/embeds_many.rb +2 -2
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +18 -4
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +23 -4
- data/lib/mongoid/association/embedded/embeds_one.rb +3 -3
- data/lib/mongoid/association/macros.rb +2 -1
- data/lib/mongoid/association/many.rb +11 -7
- data/lib/mongoid/association/nested/many.rb +5 -4
- data/lib/mongoid/association/nested/nested_buildable.rb +4 -4
- data/lib/mongoid/association/nested/one.rb +5 -5
- data/lib/mongoid/association/one.rb +2 -2
- data/lib/mongoid/association/options.rb +9 -9
- data/lib/mongoid/association/proxy.rb +14 -3
- data/lib/mongoid/association/referenced/auto_save.rb +4 -3
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +1 -0
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +5 -6
- data/lib/mongoid/association/referenced/belongs_to.rb +2 -2
- data/lib/mongoid/association/referenced/counter_cache.rb +10 -10
- data/lib/mongoid/association/referenced/eager.rb +2 -2
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +66 -13
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +6 -3
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +20 -28
- data/lib/mongoid/association/referenced/has_many/proxy.rb +24 -18
- data/lib/mongoid/association/referenced/has_many.rb +3 -3
- data/lib/mongoid/association/referenced/has_one/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +5 -5
- data/lib/mongoid/association/referenced/has_one/proxy.rb +9 -12
- data/lib/mongoid/association/referenced/has_one.rb +3 -3
- data/lib/mongoid/association/referenced/syncable.rb +4 -4
- data/lib/mongoid/association/reflections.rb +2 -2
- data/lib/mongoid/association/relatable.rb +44 -10
- data/lib/mongoid/association.rb +5 -5
- data/lib/mongoid/atomic/modifiers.rb +2 -2
- data/lib/mongoid/atomic/paths/embedded/many.rb +19 -0
- data/lib/mongoid/attributes/dynamic.rb +3 -3
- data/lib/mongoid/attributes/nested.rb +5 -5
- data/lib/mongoid/attributes/processing.rb +10 -3
- data/lib/mongoid/attributes/projector.rb +1 -1
- data/lib/mongoid/attributes/readonly.rb +2 -2
- data/lib/mongoid/attributes.rb +43 -40
- data/lib/mongoid/changeable.rb +42 -7
- data/lib/mongoid/clients/options.rb +5 -1
- data/lib/mongoid/clients/sessions.rb +2 -14
- data/lib/mongoid/clients/validators/storage.rb +3 -3
- data/lib/mongoid/config/validators/client.rb +6 -6
- data/lib/mongoid/config.rb +27 -17
- data/lib/mongoid/contextual/aggregable/memory.rb +24 -16
- data/lib/mongoid/contextual/aggregable/mongo.rb +5 -5
- data/lib/mongoid/contextual/aggregable/none.rb +1 -1
- data/lib/mongoid/contextual/atomic.rb +1 -1
- data/lib/mongoid/contextual/geo_near.rb +7 -7
- data/lib/mongoid/contextual/map_reduce.rb +2 -2
- data/lib/mongoid/contextual/memory.rb +59 -32
- data/lib/mongoid/contextual/mongo.rb +184 -256
- data/lib/mongoid/contextual/none.rb +34 -16
- data/lib/mongoid/contextual/queryable.rb +1 -1
- data/lib/mongoid/contextual.rb +2 -2
- data/lib/mongoid/copyable.rb +32 -8
- data/lib/mongoid/criteria/findable.rb +7 -4
- data/lib/mongoid/criteria/includable.rb +24 -20
- data/lib/mongoid/criteria/marshalable.rb +10 -2
- data/lib/mongoid/criteria/permission.rb +1 -1
- data/lib/mongoid/criteria/queryable/aggregable.rb +2 -2
- data/lib/mongoid/criteria/queryable/extensions/array.rb +2 -15
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +25 -4
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +2 -2
- data/lib/mongoid/criteria/queryable/extensions/date.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +0 -16
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +1 -1
- data/lib/mongoid/criteria/queryable/extensions/object.rb +2 -1
- data/lib/mongoid/criteria/queryable/extensions/range.rb +13 -5
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +3 -3
- data/lib/mongoid/criteria/queryable/extensions/set.rb +1 -1
- data/lib/mongoid/criteria/queryable/extensions/string.rb +3 -3
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +4 -2
- data/lib/mongoid/criteria/queryable/extensions/time.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +6 -1
- data/lib/mongoid/criteria/queryable/key.rb +3 -3
- data/lib/mongoid/criteria/queryable/optional.rb +5 -11
- data/lib/mongoid/criteria/queryable/options.rb +2 -2
- data/lib/mongoid/criteria/queryable/pipeline.rb +1 -1
- data/lib/mongoid/criteria/queryable/selectable.rb +5 -27
- data/lib/mongoid/criteria/queryable/selector.rb +92 -7
- data/lib/mongoid/criteria/queryable/smash.rb +40 -7
- data/lib/mongoid/criteria/queryable.rb +12 -7
- data/lib/mongoid/criteria/scopable.rb +2 -2
- data/lib/mongoid/criteria.rb +15 -37
- data/lib/mongoid/deprecable.rb +36 -0
- data/lib/mongoid/deprecation.rb +25 -0
- data/lib/mongoid/document.rb +98 -36
- data/lib/mongoid/equality.rb +12 -12
- data/lib/mongoid/errors/document_not_found.rb +10 -6
- data/lib/mongoid/errors/invalid_config_option.rb +1 -1
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +1 -1
- data/lib/mongoid/errors/invalid_dot_dollar_assignment.rb +23 -0
- data/lib/mongoid/errors/invalid_field.rb +6 -2
- data/lib/mongoid/errors/invalid_field_type.rb +26 -0
- data/lib/mongoid/errors/invalid_relation.rb +1 -1
- data/lib/mongoid/errors/invalid_relation_option.rb +1 -1
- data/lib/mongoid/errors/invalid_session_use.rb +1 -1
- data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
- data/lib/mongoid/errors/mongoid_error.rb +3 -3
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +1 -1
- data/lib/mongoid/errors/no_client_database.rb +1 -1
- data/lib/mongoid/errors/no_client_hosts.rb +1 -1
- data/lib/mongoid/errors/readonly_attribute.rb +1 -1
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +1 -1
- data/lib/mongoid/errors/unknown_attribute.rb +1 -1
- data/lib/mongoid/errors.rb +2 -2
- data/lib/mongoid/extensions/array.rb +9 -7
- data/lib/mongoid/extensions/big_decimal.rb +29 -10
- data/lib/mongoid/extensions/binary.rb +42 -0
- data/lib/mongoid/extensions/boolean.rb +8 -2
- data/lib/mongoid/extensions/date.rb +26 -20
- data/lib/mongoid/extensions/date_time.rb +1 -1
- data/lib/mongoid/extensions/false_class.rb +1 -1
- data/lib/mongoid/extensions/float.rb +4 -5
- data/lib/mongoid/extensions/hash.rb +13 -6
- data/lib/mongoid/extensions/integer.rb +4 -5
- data/lib/mongoid/extensions/module.rb +1 -1
- data/lib/mongoid/extensions/object.rb +8 -6
- data/lib/mongoid/extensions/range.rb +41 -10
- data/lib/mongoid/extensions/regexp.rb +11 -4
- data/lib/mongoid/extensions/set.rb +11 -4
- data/lib/mongoid/extensions/string.rb +11 -22
- data/lib/mongoid/extensions/symbol.rb +4 -15
- data/lib/mongoid/extensions/time.rb +27 -16
- data/lib/mongoid/extensions/time_with_zone.rb +1 -2
- data/lib/mongoid/extensions/true_class.rb +1 -1
- data/lib/mongoid/extensions.rb +1 -0
- data/lib/mongoid/factory.rb +42 -7
- data/lib/mongoid/fields/foreign_key.rb +11 -4
- data/lib/mongoid/fields/localized.rb +2 -2
- data/lib/mongoid/fields/standard.rb +7 -7
- data/lib/mongoid/fields/validators/macro.rb +3 -9
- data/lib/mongoid/fields.rb +57 -15
- data/lib/mongoid/findable.rb +28 -22
- data/lib/mongoid/indexable/specification.rb +2 -2
- data/lib/mongoid/indexable/validators/options.rb +6 -2
- data/lib/mongoid/interceptable.rb +73 -13
- data/lib/mongoid/matchable.rb +1 -1
- data/lib/mongoid/matcher.rb +12 -7
- data/lib/mongoid/persistable/creatable.rb +18 -9
- data/lib/mongoid/persistable/deletable.rb +1 -1
- data/lib/mongoid/persistable/destroyable.rb +1 -1
- data/lib/mongoid/persistable/savable.rb +2 -2
- data/lib/mongoid/persistable/unsettable.rb +1 -1
- data/lib/mongoid/persistable/updatable.rb +19 -12
- data/lib/mongoid/persistable/upsertable.rb +1 -1
- data/lib/mongoid/persistable.rb +3 -3
- data/lib/mongoid/persistence_context.rb +22 -5
- data/lib/mongoid/query_cache.rb +8 -260
- data/lib/mongoid/railties/controller_runtime.rb +1 -1
- data/lib/mongoid/reloadable.rb +7 -3
- data/lib/mongoid/scopable.rb +17 -15
- data/lib/mongoid/selectable.rb +1 -2
- data/lib/mongoid/serializable.rb +10 -6
- data/lib/mongoid/stateful.rb +35 -9
- data/lib/mongoid/tasks/database.rb +0 -2
- data/lib/mongoid/threaded/lifecycle.rb +5 -5
- data/lib/mongoid/threaded.rb +9 -9
- data/lib/mongoid/timestamps/created.rb +1 -1
- data/lib/mongoid/timestamps/updated.rb +2 -2
- data/lib/mongoid/touchable.rb +2 -3
- data/lib/mongoid/traversable.rb +4 -3
- data/lib/mongoid/validatable/localizable.rb +1 -1
- data/lib/mongoid/validatable/macros.rb +0 -2
- data/lib/mongoid/validatable/presence.rb +2 -2
- data/lib/mongoid/validatable/uniqueness.rb +9 -8
- data/lib/mongoid/validatable.rb +6 -6
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid/warnings.rb +3 -4
- data/lib/mongoid.rb +1 -0
- data/spec/config/mongoid.yml +16 -0
- data/spec/integration/app_spec.rb +8 -12
- data/spec/integration/associations/belongs_to_spec.rb +18 -0
- data/spec/integration/associations/embedded_spec.rb +15 -0
- data/spec/integration/associations/embeds_many_spec.rb +15 -2
- data/spec/integration/associations/embeds_one_spec.rb +18 -0
- data/spec/integration/associations/foreign_key_spec.rb +9 -0
- data/spec/integration/associations/has_and_belongs_to_many_spec.rb +21 -0
- data/spec/integration/associations/has_one_spec.rb +97 -1
- data/spec/integration/associations/scope_option_spec.rb +1 -1
- data/spec/integration/callbacks_models.rb +95 -1
- data/spec/integration/callbacks_spec.rb +226 -4
- data/spec/integration/criteria/range_spec.rb +95 -1
- data/spec/integration/discriminator_key_spec.rb +115 -76
- data/spec/integration/dots_and_dollars_spec.rb +277 -0
- data/spec/integration/i18n_fallbacks_spec.rb +1 -15
- data/spec/integration/matcher_examples_spec.rb +20 -13
- data/spec/integration/matcher_operator_data/type_decimal.yml +3 -2
- data/spec/integration/matcher_operator_spec.rb +3 -5
- data/spec/integration/persistence/range_field_spec.rb +350 -0
- data/spec/mongoid/association/counter_cache_spec.rb +1 -1
- data/spec/mongoid/association/depending_spec.rb +9 -9
- data/spec/mongoid/association/eager_spec.rb +2 -1
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +2 -1
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +54 -0
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +69 -9
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +112 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +219 -8
- data/spec/mongoid/association/embedded/embeds_many_models.rb +157 -0
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +12 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +68 -0
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +25 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +19 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +28 -0
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +2 -1
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +54 -0
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +15 -0
- data/spec/mongoid/association/referenced/belongs_to_models.rb +11 -0
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +2 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +67 -4
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +25 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +35 -2
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +109 -0
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +2 -56
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +82 -13
- data/spec/mongoid/association/referenced/has_many_models.rb +3 -1
- data/spec/mongoid/association/referenced/has_many_spec.rb +25 -0
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +2 -2
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +107 -1
- data/spec/mongoid/association/referenced/has_one_models.rb +16 -0
- data/spec/mongoid/association/syncable_spec.rb +14 -0
- data/spec/mongoid/atomic/paths_spec.rb +0 -14
- data/spec/mongoid/attributes/nested_spec.rb +80 -11
- data/spec/mongoid/attributes/nested_spec_models.rb +48 -0
- data/spec/mongoid/attributes/projector_spec.rb +1 -5
- data/spec/mongoid/attributes_spec.rb +524 -27
- data/spec/mongoid/changeable_spec.rb +130 -13
- data/spec/mongoid/clients/factory_spec.rb +23 -30
- data/spec/mongoid/clients/sessions_spec.rb +0 -38
- data/spec/mongoid/clients_spec.rb +32 -2
- data/spec/mongoid/config_spec.rb +58 -13
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +396 -158
- data/spec/mongoid/contextual/aggregable/memory_table.yml +88 -0
- data/spec/mongoid/contextual/aggregable/memory_table_spec.rb +62 -0
- data/spec/mongoid/contextual/map_reduce_spec.rb +2 -16
- data/spec/mongoid/contextual/memory_spec.rb +521 -14
- data/spec/mongoid/contextual/mongo_spec.rb +564 -394
- data/spec/mongoid/contextual/none_spec.rb +11 -19
- data/spec/mongoid/copyable_spec.rb +451 -1
- data/spec/mongoid/criteria/findable_spec.rb +86 -210
- data/spec/mongoid/criteria/includable_spec.rb +1492 -0
- data/spec/mongoid/criteria/includable_spec_models.rb +54 -0
- data/spec/mongoid/criteria/marshalable_spec.rb +18 -1
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +7 -19
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +134 -26
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -15
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +73 -7
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/optional_spec.rb +0 -484
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +50 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +77 -85
- data/spec/mongoid/criteria/queryable/selector_spec.rb +14 -2
- data/spec/mongoid/criteria_spec.rb +469 -1201
- data/spec/mongoid/document_fields_spec.rb +173 -24
- data/spec/mongoid/document_spec.rb +32 -41
- data/spec/mongoid/equality_spec.rb +12 -12
- data/spec/mongoid/errors/document_not_found_spec.rb +29 -2
- data/spec/mongoid/errors/invalid_field_spec.rb +1 -1
- data/spec/mongoid/errors/invalid_field_type_spec.rb +55 -0
- data/spec/mongoid/errors/mongoid_error_spec.rb +3 -1
- data/spec/mongoid/errors/no_environment_spec.rb +3 -3
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +1 -1
- data/spec/mongoid/extensions/array_spec.rb +16 -2
- data/spec/mongoid/extensions/big_decimal_spec.rb +697 -212
- data/spec/mongoid/extensions/binary_spec.rb +44 -9
- data/spec/mongoid/extensions/boolean_spec.rb +68 -82
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +7 -3
- data/spec/mongoid/extensions/date_spec.rb +71 -1
- data/spec/mongoid/extensions/date_time_spec.rb +15 -9
- data/spec/mongoid/extensions/float_spec.rb +48 -76
- data/spec/mongoid/extensions/hash_spec.rb +30 -0
- data/spec/mongoid/extensions/integer_spec.rb +45 -66
- data/spec/mongoid/extensions/range_spec.rb +255 -54
- data/spec/mongoid/extensions/regexp_spec.rb +58 -33
- data/spec/mongoid/extensions/set_spec.rb +106 -0
- data/spec/mongoid/extensions/string_spec.rb +53 -25
- data/spec/mongoid/extensions/symbol_spec.rb +18 -25
- data/spec/mongoid/extensions/time_spec.rb +634 -66
- data/spec/mongoid/extensions/time_with_zone_spec.rb +17 -31
- data/spec/mongoid/factory_spec.rb +61 -1
- data/spec/mongoid/fields_spec.rb +321 -50
- data/spec/mongoid/findable_spec.rb +64 -29
- data/spec/mongoid/indexable/specification_spec.rb +2 -2
- data/spec/mongoid/indexable_spec.rb +39 -20
- data/spec/mongoid/interceptable_spec.rb +584 -5
- data/spec/mongoid/interceptable_spec_models.rb +235 -4
- data/spec/mongoid/matcher/extract_attribute_spec.rb +1 -5
- data/spec/mongoid/mongoizable_spec.rb +285 -0
- data/spec/mongoid/persistable/creatable_spec.rb +2 -2
- data/spec/mongoid/persistable/deletable_spec.rb +2 -2
- data/spec/mongoid/persistable/destroyable_spec.rb +2 -2
- data/spec/mongoid/persistable/upsertable_spec.rb +14 -0
- data/spec/mongoid/persistence_context_spec.rb +50 -1
- data/spec/mongoid/query_cache_middleware_spec.rb +0 -18
- data/spec/mongoid/query_cache_spec.rb +0 -154
- data/spec/mongoid/reloadable_spec.rb +35 -2
- data/spec/mongoid/scopable_spec.rb +54 -16
- data/spec/mongoid/shardable_spec.rb +14 -0
- data/spec/mongoid/stateful_spec.rb +28 -0
- data/spec/mongoid/timestamps_spec.rb +390 -0
- data/spec/mongoid/timestamps_spec_models.rb +67 -0
- data/spec/mongoid/touchable_spec.rb +116 -0
- data/spec/mongoid/touchable_spec_models.rb +12 -8
- data/spec/mongoid/traversable_spec.rb +4 -11
- data/spec/mongoid/validatable/presence_spec.rb +1 -1
- data/spec/mongoid/validatable/uniqueness_spec.rb +60 -31
- data/spec/mongoid/warnings_spec.rb +35 -0
- data/spec/rails/controller_extension/controller_runtime_spec.rb +2 -2
- data/spec/rails/mongoid_spec.rb +4 -16
- data/spec/shared/lib/mrss/event_subscriber.rb +5 -15
- data/spec/support/constraints.rb +24 -0
- data/spec/support/macros.rb +30 -0
- data/spec/support/models/augmentation.rb +12 -0
- data/spec/support/models/band.rb +3 -0
- data/spec/support/models/catalog.rb +24 -0
- data/spec/support/models/circus.rb +3 -0
- data/spec/support/models/fanatic.rb +8 -0
- data/spec/support/models/implant.rb +9 -0
- data/spec/support/models/label.rb +2 -0
- data/spec/support/models/passport.rb +9 -0
- data/spec/support/models/person.rb +1 -0
- data/spec/support/models/player.rb +2 -0
- data/spec/support/models/powerup.rb +12 -0
- data/spec/support/models/registry.rb +1 -0
- data/spec/support/models/school.rb +14 -0
- data/spec/support/models/shield.rb +18 -0
- data/spec/support/models/student.rb +14 -0
- data/spec/support/models/weapon.rb +12 -0
- data.tar.gz.sig +0 -0
- metadata +49 -13
- metadata.gz.sig +0 -0
- data/lib/mongoid/errors/eager_load.rb +0 -23
- data/lib/mongoid/errors/invalid_value.rb +0 -17
- data/spec/mongoid/errors/eager_load_spec.rb +0 -31
@@ -40,7 +40,7 @@ module Mongoid
|
|
40
40
|
#
|
41
41
|
# @param [ Array ] other The other array.
|
42
42
|
#
|
43
|
-
# @return [ true
|
43
|
+
# @return [ true | false ] If the objects are equal.
|
44
44
|
def ==(other)
|
45
45
|
other.is_a?(None)
|
46
46
|
end
|
@@ -50,7 +50,7 @@ module Mongoid
|
|
50
50
|
# @example Get the distinct values in null context.
|
51
51
|
# context.distinct(:name)
|
52
52
|
#
|
53
|
-
# @param [ String
|
53
|
+
# @param [ String | Symbol ] _field The name of the field.
|
54
54
|
#
|
55
55
|
# @return [ Array ] An empty Array.
|
56
56
|
def distinct(_field)
|
@@ -88,13 +88,37 @@ module Mongoid
|
|
88
88
|
# @example Get the values for null context.
|
89
89
|
# context.pluck(:name)
|
90
90
|
#
|
91
|
-
# @param [ String
|
91
|
+
# @param [ String | Symbol ] *_fields Field(s) to pluck.
|
92
92
|
#
|
93
93
|
# @return [ Array ] An empty Array.
|
94
|
-
def pluck(*
|
94
|
+
def pluck(*_fields)
|
95
95
|
[]
|
96
96
|
end
|
97
97
|
|
98
|
+
# Pick the field values in null context.
|
99
|
+
#
|
100
|
+
# @example Get the value for null context.
|
101
|
+
# context.pick(:name)
|
102
|
+
#
|
103
|
+
# @param [ String | Symbol ] *_fields Field or fields to pick.
|
104
|
+
#
|
105
|
+
# @return [ nil ] Always reeturn nil.
|
106
|
+
def pick(*_fields)
|
107
|
+
nil
|
108
|
+
end
|
109
|
+
|
110
|
+
# Tally the field values in null context.
|
111
|
+
#
|
112
|
+
# @example Get the values for null context.
|
113
|
+
# context.tally(:name)
|
114
|
+
#
|
115
|
+
# @param [ String | Symbol ] _field Field to tally.
|
116
|
+
#
|
117
|
+
# @return [ Hash ] An empty Hash.
|
118
|
+
def tally(_field)
|
119
|
+
{}
|
120
|
+
end
|
121
|
+
|
98
122
|
# Create the new null context.
|
99
123
|
#
|
100
124
|
# @example Create the new context.
|
@@ -110,14 +134,11 @@ module Mongoid
|
|
110
134
|
# @example Get the first document in null context.
|
111
135
|
# context.first
|
112
136
|
#
|
113
|
-
# @param [ Integer
|
114
|
-
# return, or a hash of options.
|
137
|
+
# @param [ Integer ] limit The number of documents to return.
|
115
138
|
#
|
116
139
|
# @return [ nil ] Always nil.
|
117
|
-
def first(
|
118
|
-
|
119
|
-
[]
|
120
|
-
end
|
140
|
+
def first(limit = nil)
|
141
|
+
[] unless limit.nil?
|
121
142
|
end
|
122
143
|
|
123
144
|
# Always returns nil.
|
@@ -125,14 +146,11 @@ module Mongoid
|
|
125
146
|
# @example Get the last document in null context.
|
126
147
|
# context.last
|
127
148
|
#
|
128
|
-
# @param [ Integer
|
129
|
-
# return, or a hash of options.
|
149
|
+
# @param [ Integer ] limit The number of documents to return.
|
130
150
|
#
|
131
151
|
# @return [ nil ] Always nil.
|
132
|
-
def last(
|
133
|
-
|
134
|
-
[]
|
135
|
-
end
|
152
|
+
def last(limit = nil)
|
153
|
+
[] unless limit.nil?
|
136
154
|
end
|
137
155
|
|
138
156
|
# Returns nil or empty array.
|
data/lib/mongoid/contextual.rb
CHANGED
@@ -30,7 +30,7 @@ module Mongoid
|
|
30
30
|
# @example Get the context.
|
31
31
|
# criteria.context
|
32
32
|
#
|
33
|
-
# @return [ Memory
|
33
|
+
# @return [ Memory | Mongo ] The context.
|
34
34
|
def context
|
35
35
|
@context ||= create_context
|
36
36
|
end
|
@@ -45,7 +45,7 @@ module Mongoid
|
|
45
45
|
# @example Create the context.
|
46
46
|
# contextual.create_context
|
47
47
|
#
|
48
|
-
# @return [ Mongo
|
48
|
+
# @return [ Mongo | Memory ] The context.
|
49
49
|
def create_context
|
50
50
|
return None.new(self) if empty_and_chainable?
|
51
51
|
embedded ? Memory.new(self) : Mongo.new(self)
|
data/lib/mongoid/copyable.rb
CHANGED
@@ -10,7 +10,11 @@ module Mongoid
|
|
10
10
|
# the exception of the document's id, and will reset all the
|
11
11
|
# instance variables.
|
12
12
|
#
|
13
|
-
# This clone also includes embedded documents.
|
13
|
+
# This clone also includes embedded documents. If there is an _id field in
|
14
|
+
# the embedded document, it will be maintained, unlike the root's _id.
|
15
|
+
#
|
16
|
+
# If cloning an embedded child, the embedded parent is not cloned and the
|
17
|
+
# embedded_in association is not set.
|
14
18
|
#
|
15
19
|
# @example Clone the document.
|
16
20
|
# document.clone
|
@@ -19,19 +23,42 @@ module Mongoid
|
|
19
23
|
def clone
|
20
24
|
# @note This next line is here to address #2704, even though having an
|
21
25
|
# _id and id field in the document would cause problems with Mongoid
|
22
|
-
# elsewhere.
|
26
|
+
# elsewhere. Note this is only done on the root document as we want
|
27
|
+
# to maintain the same _id on the embedded documents.
|
23
28
|
attrs = clone_document.except(*self.class.id_fields)
|
29
|
+
Copyable.clone_with_hash(self.class, attrs)
|
30
|
+
end
|
31
|
+
alias :dup :clone
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
# Create clone of a document of the given klass with the given attributes
|
36
|
+
# hash. This is used recursively so that embedded associations are cloned
|
37
|
+
# safely.
|
38
|
+
#
|
39
|
+
# @param klass [ Class ] The class of the document to create.
|
40
|
+
# @param attrs [ Hash ] The hash of the attributes.
|
41
|
+
#
|
42
|
+
# @return [ Document ] The new document.
|
43
|
+
def self.clone_with_hash(klass, attrs)
|
24
44
|
dynamic_attrs = {}
|
25
|
-
_attribute_names =
|
45
|
+
_attribute_names = klass.attribute_names
|
26
46
|
attrs.reject! do |attr_name, value|
|
27
47
|
unless _attribute_names.include?(attr_name)
|
28
48
|
dynamic_attrs[attr_name] = value
|
29
49
|
true
|
30
50
|
end
|
31
51
|
end
|
32
|
-
|
52
|
+
|
53
|
+
Factory.build(klass, attrs).tap do |object|
|
33
54
|
dynamic_attrs.each do |attr_name, value|
|
34
|
-
|
55
|
+
assoc = object.embedded_relations[attr_name]
|
56
|
+
if assoc&.one? && Hash === value
|
57
|
+
object.send("#{attr_name}=", clone_with_hash(assoc.klass, value))
|
58
|
+
elsif assoc&.many? && Array === value
|
59
|
+
docs = value.map { |h| clone_with_hash(assoc.klass, h) }
|
60
|
+
object.send("#{attr_name}=", docs)
|
61
|
+
elsif object.respond_to?("#{attr_name}=")
|
35
62
|
object.send("#{attr_name}=", value)
|
36
63
|
else
|
37
64
|
object.attributes[attr_name] = value
|
@@ -39,9 +66,6 @@ module Mongoid
|
|
39
66
|
end
|
40
67
|
end
|
41
68
|
end
|
42
|
-
alias :dup :clone
|
43
|
-
|
44
|
-
private
|
45
69
|
|
46
70
|
# Clone the document attributes
|
47
71
|
#
|
@@ -10,11 +10,11 @@ module Mongoid
|
|
10
10
|
# criteria.execute_or_raise(id)
|
11
11
|
#
|
12
12
|
# @param [ Object ] ids The arguments passed.
|
13
|
-
# @param [ true
|
13
|
+
# @param [ true | false ] multi Whether there arguments were a list.
|
14
14
|
#
|
15
15
|
# @raise [ Errors::DocumentNotFound ] If nothing returned.
|
16
16
|
#
|
17
|
-
# @return [ Document
|
17
|
+
# @return [ Document | Array<Document> ] The document(s).
|
18
18
|
def execute_or_raise(ids, multi)
|
19
19
|
result = multiple_from_db(ids)
|
20
20
|
check_for_missing_documents!(result, ids)
|
@@ -23,15 +23,18 @@ module Mongoid
|
|
23
23
|
|
24
24
|
# Find the matchind document(s) in the criteria for the provided ids.
|
25
25
|
#
|
26
|
+
# @note Each argument can be an individual id, an array of ids or
|
27
|
+
# a nested array. Each array will be flattened.
|
28
|
+
#
|
26
29
|
# @example Find by an id.
|
27
30
|
# criteria.find(BSON::ObjectId.new)
|
28
31
|
#
|
29
32
|
# @example Find by multiple ids.
|
30
33
|
# criteria.find([ BSON::ObjectId.new, BSON::ObjectId.new ])
|
31
34
|
#
|
32
|
-
# @param [ Array<
|
35
|
+
# @param [ Object | Array<Object> ] *args The ids to search for.
|
33
36
|
#
|
34
|
-
# @return [ Array<Document
|
37
|
+
# @return [ Document | Array<Document> ] The matching document(s).
|
35
38
|
def find(*args)
|
36
39
|
ids = args.__find_args__
|
37
40
|
raise_invalid if ids.any?(&:nil?)
|
@@ -26,15 +26,12 @@ module Mongoid
|
|
26
26
|
#
|
27
27
|
# @return [ Criteria ] The cloned criteria.
|
28
28
|
def includes(*relations)
|
29
|
-
extract_includes_list(klass, relations)
|
29
|
+
extract_includes_list(klass, nil, relations)
|
30
30
|
clone
|
31
31
|
end
|
32
32
|
|
33
33
|
# Get a list of criteria that are to be executed for eager loading.
|
34
34
|
#
|
35
|
-
# @example Get the eager loading inclusions.
|
36
|
-
# Person.includes(:game).inclusions
|
37
|
-
#
|
38
35
|
# @return [ Array<Association> ] The inclusions.
|
39
36
|
def inclusions
|
40
37
|
@inclusions ||= []
|
@@ -42,9 +39,6 @@ module Mongoid
|
|
42
39
|
|
43
40
|
# Set the inclusions for the criteria.
|
44
41
|
#
|
45
|
-
# @example Set the inclusions.
|
46
|
-
# criteria.inclusions = [ association ]
|
47
|
-
#
|
48
42
|
# @param [ Array<Association> ] value The inclusions.
|
49
43
|
#
|
50
44
|
# @return [ Array<Association> ] The new inclusions.
|
@@ -56,30 +50,40 @@ module Mongoid
|
|
56
50
|
|
57
51
|
# Add an inclusion definition to the list of inclusions for the criteria.
|
58
52
|
#
|
59
|
-
# @
|
60
|
-
#
|
61
|
-
#
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
53
|
+
# @param [ Association ] association The association.
|
54
|
+
# @param [ String ] parent The name of the association above this one in
|
55
|
+
# the inclusion tree, if it is a nested inclusion.
|
56
|
+
def add_inclusion(association, parent = nil)
|
57
|
+
if assoc = inclusions.detect { |a| a == association }
|
58
|
+
assoc.parent_inclusions.push(parent) if parent
|
59
|
+
else
|
60
|
+
assoc = association.dup
|
61
|
+
assoc.parent_inclusions = []
|
62
|
+
assoc.parent_inclusions.push(parent) if parent
|
63
|
+
inclusions.push(assoc)
|
64
|
+
end
|
68
65
|
end
|
69
66
|
|
70
|
-
|
67
|
+
# Iterate through the list of relations and create the inclusions list.
|
68
|
+
#
|
69
|
+
# @param [ Class | String | Symbol ] _parent_class The class from which the
|
70
|
+
# association originates.
|
71
|
+
# @param [ String ] parent The name of the association above this one in
|
72
|
+
# the inclusion tree, if it is a nested inclusion.
|
73
|
+
# @param relations_list The names of the associations to eager load.
|
74
|
+
def extract_includes_list(_parent_class, parent, *relations_list)
|
71
75
|
relations_list.flatten.each do |relation_object|
|
72
76
|
if relation_object.is_a?(Hash)
|
73
77
|
relation_object.each do |relation, _includes|
|
74
78
|
association = _parent_class.reflect_on_association(relation)
|
75
79
|
raise Errors::InvalidIncludes.new(_klass, [ relation ]) unless association
|
76
|
-
add_inclusion(
|
77
|
-
extract_includes_list(association.klass, _includes)
|
80
|
+
add_inclusion(association, parent)
|
81
|
+
extract_includes_list(association.klass, association.name, _includes)
|
78
82
|
end
|
79
83
|
else
|
80
84
|
association = _parent_class.reflect_on_association(relation_object)
|
81
85
|
raise Errors::InvalidIncludes.new(_parent_class, [ relation_object ]) unless association
|
82
|
-
add_inclusion(
|
86
|
+
add_inclusion(association, parent)
|
83
87
|
end
|
84
88
|
end
|
85
89
|
end
|
@@ -9,9 +9,12 @@ module Mongoid
|
|
9
9
|
# @example Dump the criteria.
|
10
10
|
# Marshal.dump(criteria)
|
11
11
|
#
|
12
|
+
# Note :mongo is written here for backwards compatibility with Mongoid 7
|
13
|
+
# and earlier.
|
14
|
+
#
|
12
15
|
# @return [ Array<Object> ] The dumped data.
|
13
16
|
def marshal_dump
|
14
|
-
data = [ klass,
|
17
|
+
data = [ klass, :mongo, inclusions, documents, strategy, negating ]
|
15
18
|
data.push(scoping_options).push(dump_hash(:selector)).push(dump_hash(:options))
|
16
19
|
end
|
17
20
|
|
@@ -23,7 +26,12 @@ module Mongoid
|
|
23
26
|
# @param [ Array ] data The raw data.
|
24
27
|
def marshal_load(data)
|
25
28
|
@scoping_options, raw_selector, raw_options = data.pop(3)
|
26
|
-
@klass,
|
29
|
+
@klass, driver, @inclusions, @documents, @strategy, @negating = data
|
30
|
+
|
31
|
+
if driver == :mongo1x
|
32
|
+
raise NotImplementedError, "Mongoid no longer supports marshalling with driver version 1.x."
|
33
|
+
end
|
34
|
+
|
27
35
|
@selector = load_hash(Queryable::Selector, raw_selector)
|
28
36
|
@options = load_hash(Queryable::Options, raw_options)
|
29
37
|
end
|
@@ -54,7 +54,7 @@ module Mongoid
|
|
54
54
|
# @api private
|
55
55
|
#
|
56
56
|
# @param [ Object ] criteria
|
57
|
-
# @return [
|
57
|
+
# @return [ true | false ] if should permit
|
58
58
|
def should_permit?(criteria)
|
59
59
|
if criteria.respond_to?(:permitted?)
|
60
60
|
return criteria.permitted?
|
@@ -20,7 +20,7 @@ module Mongoid
|
|
20
20
|
# @example Is the aggregable aggregating?
|
21
21
|
# aggregable.aggregating?
|
22
22
|
#
|
23
|
-
# @return [ true
|
23
|
+
# @return [ true | false ] If the aggregable is aggregating.
|
24
24
|
def aggregating?
|
25
25
|
!!@aggregating
|
26
26
|
end
|
@@ -69,7 +69,7 @@ module Mongoid
|
|
69
69
|
# @example Add an unwind to the pipeline.
|
70
70
|
# aggregable.unwind(:field)
|
71
71
|
#
|
72
|
-
# @param [ String
|
72
|
+
# @param [ String | Symbol ] field The name of the field to unwind.
|
73
73
|
#
|
74
74
|
# @return [ Aggregable ] The aggregable.
|
75
75
|
def unwind(field)
|
@@ -108,20 +108,6 @@ module Mongoid
|
|
108
108
|
{ first => last.to_direction }
|
109
109
|
end
|
110
110
|
|
111
|
-
# Update all the values in the hash with the provided block.
|
112
|
-
#
|
113
|
-
# @example Update the values in place.
|
114
|
-
# [ 1, 2, 3 ].update_values(&:to_s)
|
115
|
-
#
|
116
|
-
# @param [ Proc ] block The block to execute on each value.
|
117
|
-
#
|
118
|
-
# @return [ Array ] the array.
|
119
|
-
#
|
120
|
-
# @deprecated
|
121
|
-
def update_values(&block)
|
122
|
-
replace(map(&block))
|
123
|
-
end
|
124
|
-
|
125
111
|
private
|
126
112
|
|
127
113
|
# Converts the array to a multi-dimensional array.
|
@@ -147,7 +133,8 @@ module Mongoid
|
|
147
133
|
#
|
148
134
|
# @return [ Object ] The evolved object.
|
149
135
|
def evolve(object)
|
150
|
-
|
136
|
+
case object
|
137
|
+
when ::Array, ::Set
|
151
138
|
object.map { |obj| obj.class.evolve(obj) }
|
152
139
|
else
|
153
140
|
object
|
@@ -12,18 +12,39 @@ module Mongoid
|
|
12
12
|
module BigDecimal
|
13
13
|
module ClassMethods
|
14
14
|
|
15
|
-
# Evolves the big decimal into a MongoDB friendly value
|
16
|
-
# a string.
|
15
|
+
# Evolves the big decimal into a MongoDB friendly value.
|
17
16
|
#
|
18
17
|
# @example Evolve the big decimal
|
19
18
|
# BigDecimal.evolve(decimal)
|
20
19
|
#
|
21
20
|
# @param [ BigDecimal ] object The object to convert.
|
22
21
|
#
|
23
|
-
# @return [
|
22
|
+
# @return [ Object ] The big decimal as a string, a Decimal128,
|
23
|
+
# or the inputted object if it is uncastable.
|
24
24
|
def evolve(object)
|
25
25
|
__evolve__(object) do |obj|
|
26
|
-
|
26
|
+
return if obj.nil?
|
27
|
+
case obj
|
28
|
+
when ::BigDecimal
|
29
|
+
if Mongoid.map_big_decimal_to_decimal128
|
30
|
+
BSON::Decimal128.new(obj)
|
31
|
+
else
|
32
|
+
obj.to_s
|
33
|
+
end
|
34
|
+
# Always return on string for backwards compatibility with querying
|
35
|
+
# string-backed BigDecimal fields.
|
36
|
+
when BSON::Decimal128, String then obj
|
37
|
+
else
|
38
|
+
if obj.numeric?
|
39
|
+
if Mongoid.map_big_decimal_to_decimal128
|
40
|
+
BSON::Decimal128.new(object.to_s)
|
41
|
+
else
|
42
|
+
obj.to_s
|
43
|
+
end
|
44
|
+
else
|
45
|
+
obj
|
46
|
+
end
|
47
|
+
end
|
27
48
|
end
|
28
49
|
end
|
29
50
|
end
|
@@ -17,10 +17,10 @@ module Mongoid
|
|
17
17
|
#
|
18
18
|
# @param [ Object ] object The object to evolve.
|
19
19
|
#
|
20
|
-
# @return [ true
|
20
|
+
# @return [ true | false ] The boolean value.
|
21
21
|
def evolve(object)
|
22
22
|
__evolve__(object) do |obj|
|
23
|
-
obj
|
23
|
+
mongoize(obj)
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
@@ -134,22 +134,6 @@ module Mongoid
|
|
134
134
|
replacement
|
135
135
|
end
|
136
136
|
|
137
|
-
# Update all the values in the hash with the provided block.
|
138
|
-
#
|
139
|
-
# @example Update the values in place.
|
140
|
-
# { field: "1" }.update_values(&:to_i)
|
141
|
-
#
|
142
|
-
# @param [ Proc ] block The block to execute on each value.
|
143
|
-
#
|
144
|
-
# @return [ Hash ] the hash.
|
145
|
-
#
|
146
|
-
# @deprecated
|
147
|
-
def update_values(&block)
|
148
|
-
each_pair do |key, value|
|
149
|
-
store(key, block[value])
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
137
|
private
|
154
138
|
|
155
139
|
# Apply the provided strategy for the hash with the given object.
|
@@ -51,7 +51,7 @@ module Mongoid
|
|
51
51
|
#
|
52
52
|
# @return [ Object ] The converted number.
|
53
53
|
def __numeric__(object)
|
54
|
-
object.to_s
|
54
|
+
object.to_s.match?(/\A[-+]?[0-9]*[0-9.]0*\z/) ? object.to_i : Float(object)
|
55
55
|
end
|
56
56
|
|
57
57
|
# Evolve the object to an integer.
|
@@ -43,13 +43,21 @@ module Mongoid
|
|
43
43
|
# @example Evolve the range.
|
44
44
|
# (11231312..213123131).__evolve_range__
|
45
45
|
#
|
46
|
+
# @param [ Object ] serializer The optional serializer for the field.
|
47
|
+
#
|
46
48
|
# @return [ Hash ] The $gte/$lte range query.
|
47
|
-
|
49
|
+
#
|
50
|
+
# @api private
|
51
|
+
def __evolve_range__(serializer: nil)
|
48
52
|
__evolve_range_naive__.transform_values! do |value|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
+
if serializer
|
54
|
+
serializer.evolve(value)
|
55
|
+
else
|
56
|
+
case value
|
57
|
+
when Time, DateTime then value.__evolve_time__
|
58
|
+
when Date then value.__evolve_date__
|
59
|
+
else value
|
60
|
+
end
|
53
61
|
end
|
54
62
|
end
|
55
63
|
end
|
@@ -23,12 +23,12 @@ module Mongoid
|
|
23
23
|
# @example Evolve the object to a regex.
|
24
24
|
# Regexp.evolve("\A[123]")
|
25
25
|
#
|
26
|
-
# @param [ Regexp
|
26
|
+
# @param [ Regexp | String ] object The object to evolve.
|
27
27
|
#
|
28
28
|
# @return [ Regexp ] The evolved regex.
|
29
29
|
def evolve(object)
|
30
30
|
__evolve__(object) do |obj|
|
31
|
-
|
31
|
+
mongoize(obj)
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
@@ -50,7 +50,7 @@ module Mongoid
|
|
50
50
|
# @example Evolve the object to a regex.
|
51
51
|
# BSON::Regexp::Raw.evolve("\\A[123]")
|
52
52
|
#
|
53
|
-
# @param [ BSON::Regexp::Raw
|
53
|
+
# @param [ BSON::Regexp::Raw | String ] object The object to evolve.
|
54
54
|
#
|
55
55
|
# @return [ BSON::Regexp::Raw ] The evolved raw regex.
|
56
56
|
def evolve(object)
|
@@ -60,7 +60,7 @@ module Mongoid
|
|
60
60
|
# "field".__expr_part__(value)
|
61
61
|
#
|
62
62
|
# @param [ Object ] value The value of the criteria.
|
63
|
-
# @param [ true
|
63
|
+
# @param [ true | false ] negating If the selection should be negated.
|
64
64
|
#
|
65
65
|
# @return [ Hash ] The selection.
|
66
66
|
def __expr_part__(value, negating = false)
|
@@ -84,9 +84,9 @@ module Mongoid
|
|
84
84
|
# @example Get the value as an expression.
|
85
85
|
# String.__expr_part__("field", value)
|
86
86
|
#
|
87
|
-
# @param [ String
|
87
|
+
# @param [ String | Symbol ] key The field key.
|
88
88
|
# @param [ Object ] value The value of the criteria.
|
89
|
-
# @param [ true
|
89
|
+
# @param [ true | false ] negating If the selection should be negated.
|
90
90
|
#
|
91
91
|
# @return [ Hash ] The selection.
|
92
92
|
def __expr_part__(key, value, negating = false)
|
@@ -14,7 +14,7 @@ module Mongoid
|
|
14
14
|
# :field.__expr_part__(value)
|
15
15
|
#
|
16
16
|
# @param [ Object ] value The value of the criteria.
|
17
|
-
# @param [ true
|
17
|
+
# @param [ true | false ] negating If the selection should be negated.
|
18
18
|
#
|
19
19
|
# @return [ Hash ] The selection.
|
20
20
|
def __expr_part__(value, negating = false)
|
@@ -59,7 +59,9 @@ module Mongoid
|
|
59
59
|
#
|
60
60
|
# @return [ Symbol ] The value as a symbol.
|
61
61
|
def evolve(object)
|
62
|
-
__evolve__(object)
|
62
|
+
__evolve__(object) do |obj|
|
63
|
+
obj.try(:to_sym)
|
64
|
+
end
|
63
65
|
end
|
64
66
|
end
|
65
67
|
end
|