mongoid 7.3.2 → 7.4.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/CHANGELOG.md +17 -17
- data/README.md +2 -2
- data/lib/config/locales/en.yml +30 -16
- data/lib/mongoid/association/accessors.rb +0 -27
- data/lib/mongoid/association/bindable.rb +0 -21
- data/lib/mongoid/association/builders.rb +0 -9
- data/lib/mongoid/association/constrainable.rb +0 -3
- data/lib/mongoid/association/depending.rb +0 -7
- data/lib/mongoid/association/eager_loadable.rb +0 -3
- data/lib/mongoid/association/embedded/batchable.rb +11 -39
- data/lib/mongoid/association/embedded/cyclic.rb +2 -11
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +0 -7
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +0 -3
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +0 -13
- data/lib/mongoid/association/embedded/embedded_in.rb +0 -23
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +0 -7
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +0 -3
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +31 -44
- data/lib/mongoid/association/embedded/embeds_many.rb +0 -31
- data/lib/mongoid/association/embedded/embeds_one/binding.rb +0 -7
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +0 -3
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +26 -14
- data/lib/mongoid/association/embedded/embeds_one.rb +0 -27
- data/lib/mongoid/association/embedded.rb +0 -1
- data/lib/mongoid/association/macros.rb +6 -5
- data/lib/mongoid/association/many.rb +0 -17
- data/lib/mongoid/association/marshalable.rb +0 -5
- data/lib/mongoid/association/nested/many.rb +0 -11
- data/lib/mongoid/association/nested/nested_buildable.rb +0 -9
- data/lib/mongoid/association/nested/one.rb +1 -16
- data/lib/mongoid/association/nested.rb +0 -3
- data/lib/mongoid/association/one.rb +1 -10
- data/lib/mongoid/association/options.rb +0 -33
- data/lib/mongoid/association/proxy.rb +0 -21
- data/lib/mongoid/association/referenced/auto_save.rb +0 -9
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +0 -7
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +4 -5
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +0 -1
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +0 -13
- data/lib/mongoid/association/referenced/belongs_to.rb +9 -34
- data/lib/mongoid/association/referenced/counter_cache.rb +2 -15
- data/lib/mongoid/association/referenced/eager.rb +3 -24
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +0 -5
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +0 -3
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +0 -1
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +12 -39
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +11 -38
- data/lib/mongoid/association/referenced/has_many/binding.rb +0 -5
- data/lib/mongoid/association/referenced/has_many/buildable.rb +0 -3
- data/lib/mongoid/association/referenced/has_many/eager.rb +0 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +11 -63
- data/lib/mongoid/association/referenced/has_many/proxy.rb +18 -61
- data/lib/mongoid/association/referenced/has_many.rb +12 -39
- data/lib/mongoid/association/referenced/has_one/binding.rb +0 -7
- data/lib/mongoid/association/referenced/has_one/buildable.rb +3 -4
- data/lib/mongoid/association/referenced/has_one/eager.rb +0 -1
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +0 -15
- data/lib/mongoid/association/referenced/has_one/proxy.rb +0 -9
- data/lib/mongoid/association/referenced/has_one.rb +9 -32
- data/lib/mongoid/association/referenced/syncable.rb +0 -17
- data/lib/mongoid/association/referenced.rb +0 -1
- data/lib/mongoid/association/reflections.rb +0 -1
- data/lib/mongoid/association/relatable.rb +2 -61
- data/lib/mongoid/association.rb +0 -17
- data/lib/mongoid/atomic/modifiers.rb +4 -51
- data/lib/mongoid/atomic/paths/embedded/many.rb +0 -5
- data/lib/mongoid/atomic/paths/embedded/one.rb +0 -5
- data/lib/mongoid/atomic/paths/embedded.rb +0 -3
- data/lib/mongoid/atomic/paths/root.rb +0 -5
- data/lib/mongoid/atomic/paths.rb +0 -1
- data/lib/mongoid/atomic.rb +27 -44
- data/lib/mongoid/attributes/dynamic.rb +0 -17
- data/lib/mongoid/attributes/nested.rb +0 -5
- data/lib/mongoid/attributes/processing.rb +1 -18
- data/lib/mongoid/attributes/projector.rb +0 -1
- data/lib/mongoid/attributes/readonly.rb +0 -5
- data/lib/mongoid/attributes.rb +0 -33
- data/lib/mongoid/cacheable.rb +1 -6
- data/lib/mongoid/changeable.rb +3 -59
- data/lib/mongoid/clients/factory.rb +0 -7
- data/lib/mongoid/clients/options.rb +0 -5
- data/lib/mongoid/clients/sessions.rb +0 -7
- data/lib/mongoid/clients/storage_options.rb +0 -7
- data/lib/mongoid/clients/validators/storage.rb +0 -9
- data/lib/mongoid/clients/validators.rb +0 -1
- data/lib/mongoid/clients.rb +0 -9
- data/lib/mongoid/composable.rb +0 -7
- data/lib/mongoid/config/environment.rb +13 -6
- data/lib/mongoid/config/options.rb +0 -11
- data/lib/mongoid/config/validators/client.rb +0 -17
- data/lib/mongoid/config/validators/option.rb +0 -3
- data/lib/mongoid/config/validators.rb +0 -1
- data/lib/mongoid/config.rb +37 -29
- data/lib/mongoid/contextual/aggregable/memory.rb +14 -11
- data/lib/mongoid/contextual/aggregable/mongo.rb +15 -20
- data/lib/mongoid/contextual/aggregable/none.rb +65 -0
- data/lib/mongoid/contextual/aggregable.rb +17 -0
- data/lib/mongoid/contextual/atomic.rb +7 -27
- data/lib/mongoid/contextual/command.rb +0 -5
- data/lib/mongoid/contextual/geo_near.rb +1 -34
- data/lib/mongoid/contextual/map_reduce.rb +0 -31
- data/lib/mongoid/contextual/memory.rb +4 -59
- data/lib/mongoid/contextual/mongo.rb +132 -78
- data/lib/mongoid/contextual/none.rb +42 -28
- data/lib/mongoid/contextual/queryable.rb +0 -3
- data/lib/mongoid/contextual.rb +0 -5
- data/lib/mongoid/copyable.rb +0 -5
- data/lib/mongoid/criteria/findable.rb +0 -13
- data/lib/mongoid/criteria/includable.rb +0 -9
- data/lib/mongoid/criteria/inspectable.rb +0 -3
- data/lib/mongoid/criteria/marshalable.rb +0 -5
- data/lib/mongoid/criteria/modifiable.rb +0 -19
- data/lib/mongoid/criteria/options.rb +0 -3
- data/lib/mongoid/criteria/permission.rb +0 -1
- data/lib/mongoid/criteria/queryable/aggregable.rb +0 -13
- data/lib/mongoid/criteria/queryable/expandable.rb +0 -1
- data/lib/mongoid/criteria/queryable/extensions/array.rb +1 -26
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +0 -3
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +0 -3
- data/lib/mongoid/criteria/queryable/extensions/date.rb +0 -7
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +0 -5
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +0 -25
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +0 -13
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +0 -11
- data/lib/mongoid/criteria/queryable/extensions/object.rb +1 -28
- data/lib/mongoid/criteria/queryable/extensions/range.rb +38 -16
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +0 -9
- data/lib/mongoid/criteria/queryable/extensions/set.rb +0 -3
- data/lib/mongoid/criteria/queryable/extensions/string.rb +0 -17
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +0 -9
- data/lib/mongoid/criteria/queryable/extensions/time.rb +0 -7
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +0 -7
- data/lib/mongoid/criteria/queryable/extensions.rb +0 -1
- data/lib/mongoid/criteria/queryable/key.rb +1 -14
- data/lib/mongoid/criteria/queryable/macroable.rb +0 -3
- data/lib/mongoid/criteria/queryable/mergeable.rb +1 -30
- data/lib/mongoid/criteria/queryable/optional.rb +0 -45
- data/lib/mongoid/criteria/queryable/options.rb +0 -19
- data/lib/mongoid/criteria/queryable/pipeline.rb +0 -13
- data/lib/mongoid/criteria/queryable/selectable.rb +22 -69
- data/lib/mongoid/criteria/queryable/selector.rb +0 -17
- data/lib/mongoid/criteria/queryable/smash.rb +0 -11
- data/lib/mongoid/criteria/queryable/storable.rb +11 -7
- data/lib/mongoid/criteria/queryable.rb +0 -7
- data/lib/mongoid/criteria/scopable.rb +25 -19
- data/lib/mongoid/criteria.rb +0 -57
- data/lib/mongoid/document.rb +3 -53
- data/lib/mongoid/equality.rb +26 -10
- data/lib/mongoid/errors/ambiguous_relationship.rb +2 -5
- data/lib/mongoid/errors/callback.rb +0 -3
- data/lib/mongoid/errors/criteria_argument_required.rb +0 -1
- data/lib/mongoid/errors/delete_restriction.rb +0 -3
- data/lib/mongoid/errors/document_not_destroyed.rb +2 -7
- data/lib/mongoid/errors/document_not_found.rb +0 -9
- data/lib/mongoid/errors/eager_load.rb +0 -3
- data/lib/mongoid/errors/empty_config_file.rb +25 -0
- data/lib/mongoid/errors/in_memory_collation_not_supported.rb +0 -3
- data/lib/mongoid/errors/invalid_collection.rb +0 -1
- data/lib/mongoid/errors/invalid_config_file.rb +25 -0
- data/lib/mongoid/errors/invalid_config_option.rb +0 -3
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +0 -3
- data/lib/mongoid/errors/invalid_discriminator_key_target.rb +0 -1
- data/lib/mongoid/errors/invalid_elem_match_operator.rb +0 -1
- data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +0 -1
- data/lib/mongoid/errors/invalid_expression_operator.rb +0 -1
- data/lib/mongoid/errors/invalid_field.rb +0 -5
- data/lib/mongoid/errors/invalid_field_operator.rb +0 -1
- data/lib/mongoid/errors/invalid_field_option.rb +0 -3
- data/lib/mongoid/errors/invalid_find.rb +0 -3
- data/lib/mongoid/errors/invalid_includes.rb +0 -3
- data/lib/mongoid/errors/invalid_index.rb +0 -3
- data/lib/mongoid/errors/invalid_options.rb +0 -3
- data/lib/mongoid/errors/invalid_path.rb +0 -3
- data/lib/mongoid/errors/invalid_persistence_option.rb +0 -5
- data/lib/mongoid/errors/invalid_query.rb +0 -1
- data/lib/mongoid/errors/invalid_relation.rb +0 -7
- data/lib/mongoid/errors/invalid_relation_option.rb +0 -3
- data/lib/mongoid/errors/invalid_scope.rb +0 -3
- data/lib/mongoid/errors/invalid_session_use.rb +1 -6
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +0 -1
- data/lib/mongoid/errors/invalid_storage_options.rb +0 -3
- data/lib/mongoid/errors/invalid_storage_parent.rb +0 -3
- data/lib/mongoid/errors/invalid_time.rb +0 -3
- data/lib/mongoid/errors/invalid_value.rb +0 -1
- data/lib/mongoid/errors/inverse_not_found.rb +0 -3
- data/lib/mongoid/errors/mixed_client_configuration.rb +0 -3
- data/lib/mongoid/errors/mixed_relations.rb +0 -3
- data/lib/mongoid/errors/mongoid_error.rb +0 -9
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +0 -3
- data/lib/mongoid/errors/no_client_config.rb +0 -3
- data/lib/mongoid/errors/no_client_database.rb +0 -3
- data/lib/mongoid/errors/no_client_hosts.rb +0 -3
- data/lib/mongoid/errors/no_clients_config.rb +0 -3
- data/lib/mongoid/errors/no_default_client.rb +0 -3
- data/lib/mongoid/errors/no_environment.rb +0 -3
- data/lib/mongoid/errors/no_map_reduce_output.rb +0 -3
- data/lib/mongoid/errors/no_metadata.rb +0 -3
- data/lib/mongoid/errors/no_parent.rb +0 -3
- data/lib/mongoid/errors/readonly_attribute.rb +0 -3
- data/lib/mongoid/errors/readonly_document.rb +1 -6
- data/lib/mongoid/errors/scope_overwrite.rb +0 -1
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +0 -1
- data/lib/mongoid/errors/unknown_attribute.rb +0 -3
- data/lib/mongoid/errors/unknown_model.rb +0 -3
- data/lib/mongoid/errors/unsaved_document.rb +1 -2
- data/lib/mongoid/errors/unsupported_javascript.rb +0 -3
- data/lib/mongoid/errors/validations.rb +0 -1
- data/lib/mongoid/errors.rb +2 -1
- data/lib/mongoid/evolvable.rb +0 -3
- data/lib/mongoid/extensions/array.rb +3 -29
- data/lib/mongoid/extensions/big_decimal.rb +0 -11
- data/lib/mongoid/extensions/boolean.rb +0 -3
- data/lib/mongoid/extensions/date.rb +0 -9
- data/lib/mongoid/extensions/date_time.rb +0 -9
- data/lib/mongoid/extensions/decimal128.rb +0 -5
- data/lib/mongoid/extensions/false_class.rb +1 -6
- data/lib/mongoid/extensions/float.rb +0 -7
- data/lib/mongoid/extensions/hash.rb +0 -27
- data/lib/mongoid/extensions/integer.rb +0 -9
- data/lib/mongoid/extensions/module.rb +0 -3
- data/lib/mongoid/extensions/nil_class.rb +0 -5
- data/lib/mongoid/extensions/object.rb +1 -40
- data/lib/mongoid/extensions/object_id.rb +0 -7
- data/lib/mongoid/extensions/range.rb +0 -11
- data/lib/mongoid/extensions/regexp.rb +0 -3
- data/lib/mongoid/extensions/set.rb +0 -7
- data/lib/mongoid/extensions/string.rb +1 -30
- data/lib/mongoid/extensions/symbol.rb +0 -7
- data/lib/mongoid/extensions/time.rb +0 -11
- data/lib/mongoid/extensions/time_with_zone.rb +13 -9
- data/lib/mongoid/extensions/true_class.rb +1 -6
- data/lib/mongoid/extensions.rb +15 -3
- data/lib/mongoid/factory.rb +1 -2
- data/lib/mongoid/fields/foreign_key.rb +0 -21
- data/lib/mongoid/fields/localized.rb +0 -11
- data/lib/mongoid/fields/standard.rb +0 -33
- data/lib/mongoid/fields/validators/macro.rb +0 -9
- data/lib/mongoid/fields/validators.rb +0 -1
- data/lib/mongoid/fields.rb +64 -57
- data/lib/mongoid/findable.rb +0 -5
- data/lib/mongoid/indexable/specification.rb +0 -15
- data/lib/mongoid/indexable/validators/options.rb +0 -7
- data/lib/mongoid/indexable.rb +1 -18
- data/lib/mongoid/inspectable.rb +1 -10
- data/lib/mongoid/interceptable.rb +0 -25
- data/lib/mongoid/loggable.rb +0 -9
- data/lib/mongoid/matchable.rb +0 -5
- data/lib/mongoid/matcher/eq_impl.rb +37 -2
- data/lib/mongoid/matcher/eq_impl_with_regexp.rb +6 -1
- data/lib/mongoid/persistable/creatable.rb +1 -20
- data/lib/mongoid/persistable/deletable.rb +0 -17
- data/lib/mongoid/persistable/destroyable.rb +0 -7
- data/lib/mongoid/persistable/incrementable.rb +0 -5
- data/lib/mongoid/persistable/logical.rb +0 -5
- data/lib/mongoid/persistable/poppable.rb +0 -5
- data/lib/mongoid/persistable/pullable.rb +0 -7
- data/lib/mongoid/persistable/pushable.rb +0 -7
- data/lib/mongoid/persistable/renamable.rb +0 -5
- data/lib/mongoid/persistable/savable.rb +0 -7
- data/lib/mongoid/persistable/settable.rb +0 -5
- data/lib/mongoid/persistable/unsettable.rb +0 -5
- data/lib/mongoid/persistable/updatable.rb +2 -17
- data/lib/mongoid/persistable/upsertable.rb +0 -7
- data/lib/mongoid/persistable.rb +0 -23
- data/lib/mongoid/persistence_context.rb +3 -28
- data/lib/mongoid/positional.rb +0 -5
- data/lib/mongoid/query_cache.rb +11 -34
- data/lib/mongoid/railtie.rb +0 -15
- data/lib/mongoid/railties/controller_runtime.rb +0 -1
- data/lib/mongoid/reloadable.rb +4 -16
- data/lib/mongoid/scopable.rb +6 -34
- data/lib/mongoid/selectable.rb +0 -9
- data/lib/mongoid/serializable.rb +0 -15
- data/lib/mongoid/shardable.rb +0 -7
- data/lib/mongoid/stateful.rb +0 -9
- data/lib/mongoid/stringified_symbol.rb +2 -3
- data/lib/mongoid/tasks/database.rb +1 -6
- data/lib/mongoid/threaded/lifecycle.rb +0 -21
- data/lib/mongoid/threaded.rb +0 -55
- data/lib/mongoid/timestamps/created/short.rb +0 -1
- data/lib/mongoid/timestamps/created.rb +0 -1
- data/lib/mongoid/timestamps/short.rb +0 -1
- data/lib/mongoid/timestamps/timeless.rb +0 -7
- data/lib/mongoid/timestamps/updated/short.rb +0 -1
- data/lib/mongoid/timestamps/updated.rb +0 -3
- data/lib/mongoid/timestamps.rb +0 -1
- data/lib/mongoid/touchable.rb +10 -7
- data/lib/mongoid/traversable.rb +64 -53
- data/lib/mongoid/validatable/associated.rb +0 -3
- data/lib/mongoid/validatable/format.rb +0 -1
- data/lib/mongoid/validatable/length.rb +0 -1
- data/lib/mongoid/validatable/localizable.rb +0 -3
- data/lib/mongoid/validatable/macros.rb +0 -7
- data/lib/mongoid/validatable/presence.rb +1 -8
- data/lib/mongoid/validatable/queryable.rb +0 -3
- data/lib/mongoid/validatable/uniqueness.rb +15 -30
- data/lib/mongoid/validatable.rb +1 -22
- data/lib/mongoid/version.rb +1 -2
- data/lib/mongoid.rb +0 -15
- data/lib/rails/generators/mongoid/config/config_generator.rb +0 -1
- data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
- data/lib/rails/generators/mongoid_generator.rb +0 -1
- data/lib/rails/mongoid.rb +0 -3
- data/spec/integration/app_spec.rb +0 -1
- data/spec/integration/associations/belongs_to_spec.rb +0 -1
- data/spec/integration/associations/embedded_dirty_spec.rb +29 -0
- data/spec/integration/associations/embedded_spec.rb +0 -1
- data/spec/integration/associations/embeds_many_spec.rb +139 -1
- data/spec/integration/associations/embeds_one_spec.rb +0 -1
- data/spec/integration/associations/foreign_key_spec.rb +0 -1
- data/spec/integration/associations/foreign_key_spec_models.rb +0 -1
- data/spec/integration/associations/has_many_spec.rb +0 -1
- data/spec/integration/associations/has_one_spec.rb +0 -1
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +0 -1
- data/spec/integration/associations/reverse_population_spec.rb +0 -1
- data/spec/integration/associations/reverse_population_spec_models.rb +0 -1
- data/spec/integration/associations/scope_option_spec.rb +101 -0
- data/spec/integration/atomic/modifiers_spec.rb +0 -1
- data/spec/integration/bson_regexp_raw_spec.rb +0 -1
- data/spec/integration/callbacks_models.rb +12 -0
- data/spec/integration/callbacks_spec.rb +18 -6
- data/spec/integration/contextual/empty_spec.rb +141 -0
- data/spec/integration/criteria/alias_query_spec.rb +161 -0
- data/spec/integration/criteria/date_field_spec.rb +0 -1
- data/spec/integration/criteria/default_scope_spec.rb +51 -0
- data/spec/integration/criteria/logical_spec.rb +30 -0
- data/spec/integration/criteria/range_spec.rb +265 -0
- data/spec/integration/criteria/time_with_zone_spec.rb +125 -15
- data/spec/integration/discriminator_key_spec.rb +0 -1
- data/spec/integration/discriminator_value_spec.rb +0 -1
- data/spec/integration/document_spec.rb +0 -1
- data/spec/integration/i18n_fallbacks_spec.rb +0 -1
- data/spec/integration/matcher_examples_spec.rb +0 -1
- data/spec/integration/matcher_operator_spec.rb +27 -3
- data/spec/integration/matcher_spec.rb +95 -1
- data/spec/integration/server_query_spec.rb +0 -1
- data/spec/integration/shardable_spec.rb +0 -1
- data/spec/integration/stringified_symbol_field_spec.rb +16 -3
- data/spec/lite_spec_helper.rb +8 -2
- data/spec/mongoid/association/accessors_spec.rb +44 -15
- data/spec/mongoid/association/auto_save_spec.rb +72 -34
- data/spec/mongoid/association/builders_spec.rb +1 -2
- data/spec/mongoid/association/constrainable_spec.rb +0 -1
- data/spec/mongoid/association/counter_cache_spec.rb +32 -33
- data/spec/mongoid/association/depending_spec.rb +12 -13
- data/spec/mongoid/association/eager_spec.rb +4 -5
- data/spec/mongoid/association/embedded/cyclic_spec.rb +2 -3
- data/spec/mongoid/association/embedded/dirty_spec.rb +2 -3
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +13 -14
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +384 -135
- data/spec/mongoid/association/embedded/embeds_many_models.rb +16 -1
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +21 -22
- data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one_models.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +0 -1
- data/spec/mongoid/association/macros_spec.rb +9 -10
- data/spec/mongoid/association/nested/many_spec.rb +0 -1
- data/spec/mongoid/association/nested/one_spec.rb +0 -1
- data/spec/mongoid/association/options_spec.rb +0 -1
- data/spec/mongoid/association/polymorphic_spec.rb +0 -1
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +0 -1
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +55 -17
- data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +50 -15
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +57 -53
- data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +20 -1
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +22 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +26 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +31 -3
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +179 -154
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +18 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +21 -1
- data/spec/mongoid/association/referenced/has_many/binding_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +21 -1
- data/spec/mongoid/association/referenced/has_many/eager_spec.rb +23 -7
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +303 -125
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +227 -164
- data/spec/mongoid/association/referenced/has_many_models.rb +35 -1
- data/spec/mongoid/association/referenced/has_many_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_many_spec.rb +21 -1
- data/spec/mongoid/association/referenced/has_one/binding_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +51 -8
- data/spec/mongoid/association/referenced/has_one/eager_spec.rb +17 -2
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +26 -27
- data/spec/mongoid/association/referenced/has_one_models.rb +18 -1
- data/spec/mongoid/association/referenced/has_one_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_one_spec.rb +21 -1
- data/spec/mongoid/association/reflections_spec.rb +0 -1
- data/spec/mongoid/association/syncable_spec.rb +31 -32
- data/spec/mongoid/association_spec.rb +0 -1
- data/spec/mongoid/atomic/modifiers_spec.rb +0 -1
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +0 -1
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +0 -1
- data/spec/mongoid/atomic/paths/root_spec.rb +0 -1
- data/spec/mongoid/atomic/paths_spec.rb +0 -1
- data/spec/mongoid/atomic_spec.rb +6 -7
- data/spec/mongoid/attributes/dynamic_spec.rb +0 -1
- data/spec/mongoid/attributes/nested_spec.rb +66 -67
- data/spec/mongoid/attributes/projector_spec.rb +5 -2
- data/spec/mongoid/attributes/readonly_spec.rb +22 -23
- data/spec/mongoid/attributes_spec.rb +32 -33
- data/spec/mongoid/cacheable_spec.rb +1 -2
- data/spec/mongoid/changeable_spec.rb +35 -36
- data/spec/mongoid/clients/factory_spec.rb +9 -4
- data/spec/mongoid/clients/options_spec.rb +15 -10
- data/spec/mongoid/clients/sessions_spec.rb +22 -23
- data/spec/mongoid/clients/transactions_spec.rb +49 -27
- data/spec/mongoid/clients_spec.rb +6 -7
- data/spec/mongoid/composable_spec.rb +0 -1
- data/spec/mongoid/config/environment_spec.rb +86 -9
- data/spec/mongoid/config/options_spec.rb +0 -1
- data/spec/mongoid/config_spec.rb +194 -17
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +51 -12
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +120 -21
- data/spec/mongoid/contextual/aggregable/none_spec.rb +60 -0
- data/spec/mongoid/contextual/atomic_spec.rb +109 -71
- data/spec/mongoid/contextual/geo_near_spec.rb +18 -19
- data/spec/mongoid/contextual/map_reduce_spec.rb +2 -3
- data/spec/mongoid/contextual/memory_spec.rb +23 -24
- data/spec/mongoid/contextual/mongo_spec.rb +339 -77
- data/spec/mongoid/contextual/none_spec.rb +7 -82
- data/spec/mongoid/copyable_spec.rb +11 -12
- data/spec/mongoid/copyable_spec_models.rb +0 -1
- data/spec/mongoid/criteria/findable_spec.rb +23 -24
- data/spec/mongoid/criteria/inspectable_spec.rb +0 -1
- data/spec/mongoid/criteria/marshalable_spec.rb +0 -1
- data/spec/mongoid/criteria/modifiable_spec.rb +36 -37
- data/spec/mongoid/criteria/options_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/aggregable_spec.rb +1 -2
- data/spec/mongoid/criteria/queryable/expandable_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +237 -179
- data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/key_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/optional_spec.rb +1 -2
- data/spec/mongoid/criteria/queryable/options_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/queryable_spec.rb +1 -2
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +0 -1
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +15 -16
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/selector_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/smash_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/storable_spec.rb +37 -1
- data/spec/mongoid/criteria/scopable_spec.rb +127 -1
- data/spec/mongoid/criteria_projection_spec.rb +3 -4
- data/spec/mongoid/criteria_spec.rb +546 -186
- data/spec/mongoid/document_fields_spec.rb +0 -1
- data/spec/mongoid/document_persistence_context_spec.rb +0 -1
- data/spec/mongoid/document_query_spec.rb +0 -1
- data/spec/mongoid/document_spec.rb +32 -34
- data/spec/mongoid/equality_spec.rb +142 -41
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +0 -1
- data/spec/mongoid/errors/callback_spec.rb +0 -1
- data/spec/mongoid/errors/delete_restriction_spec.rb +0 -1
- data/spec/mongoid/errors/document_not_destroyed_spec.rb +0 -1
- data/spec/mongoid/errors/document_not_found_spec.rb +0 -1
- data/spec/mongoid/errors/eager_load_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_collection_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_config_file_spec.rb +31 -0
- data/spec/mongoid/errors/invalid_config_option_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_field_option_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_field_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_find_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_includes_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_index_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_options_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_path_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_relation_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_scope_spec.rb +1 -2
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_time_spec.rb +0 -1
- data/spec/mongoid/errors/inverse_not_found_spec.rb +0 -1
- data/spec/mongoid/errors/mixed_client_configuration_spec.rb +0 -1
- data/spec/mongoid/errors/mixed_relations_spec.rb +0 -1
- data/spec/mongoid/errors/mongoid_error_spec.rb +0 -1
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +0 -1
- data/spec/mongoid/errors/no_client_config_spec.rb +0 -1
- data/spec/mongoid/errors/no_client_database_spec.rb +0 -1
- data/spec/mongoid/errors/no_client_hosts_spec.rb +0 -1
- data/spec/mongoid/errors/no_clients_config_spec.rb +0 -1
- data/spec/mongoid/errors/no_environment_spec.rb +0 -1
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +0 -1
- data/spec/mongoid/errors/no_metadata_spec.rb +0 -1
- data/spec/mongoid/errors/no_parent_spec.rb +0 -1
- data/spec/mongoid/errors/readonly_attribute_spec.rb +0 -1
- data/spec/mongoid/errors/readonly_document_spec.rb +0 -1
- data/spec/mongoid/errors/scope_overwrite_spec.rb +0 -1
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +0 -1
- data/spec/mongoid/errors/unknown_attribute_spec.rb +2 -3
- data/spec/mongoid/errors/unsaved_document_spec.rb +0 -1
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +0 -1
- data/spec/mongoid/errors/validations_spec.rb +0 -1
- data/spec/mongoid/extensions/array_spec.rb +0 -1
- data/spec/mongoid/extensions/big_decimal_spec.rb +0 -1
- data/spec/mongoid/extensions/binary_spec.rb +0 -1
- data/spec/mongoid/extensions/boolean_spec.rb +0 -1
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +0 -1
- data/spec/mongoid/extensions/date_spec.rb +0 -1
- data/spec/mongoid/extensions/date_time_spec.rb +0 -1
- data/spec/mongoid/extensions/decimal128_spec.rb +0 -1
- data/spec/mongoid/extensions/false_class_spec.rb +0 -1
- data/spec/mongoid/extensions/float_spec.rb +0 -1
- data/spec/mongoid/extensions/hash_spec.rb +0 -1
- data/spec/mongoid/extensions/integer_spec.rb +0 -1
- data/spec/mongoid/extensions/module_spec.rb +0 -1
- data/spec/mongoid/extensions/nil_class_spec.rb +0 -1
- data/spec/mongoid/extensions/object_id_spec.rb +0 -1
- data/spec/mongoid/extensions/object_spec.rb +0 -1
- data/spec/mongoid/extensions/range_spec.rb +0 -1
- data/spec/mongoid/extensions/regexp_spec.rb +0 -1
- data/spec/mongoid/extensions/set_spec.rb +0 -1
- data/spec/mongoid/extensions/string_spec.rb +2 -3
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +0 -1
- data/spec/mongoid/extensions/symbol_spec.rb +0 -1
- data/spec/mongoid/extensions/time_spec.rb +0 -1
- data/spec/mongoid/extensions/time_with_zone_spec.rb +0 -1
- data/spec/mongoid/extensions/true_class_spec.rb +0 -1
- data/spec/mongoid/extensions_spec.rb +14 -3
- data/spec/mongoid/factory_spec.rb +1 -1
- data/spec/mongoid/fields/foreign_key_spec.rb +0 -1
- data/spec/mongoid/fields/localized_spec.rb +0 -1
- data/spec/mongoid/fields/standard_spec.rb +0 -1
- data/spec/mongoid/fields_spec.rb +326 -31
- data/spec/mongoid/findable_spec.rb +21 -22
- data/spec/mongoid/indexable/specification_spec.rb +0 -1
- data/spec/mongoid/indexable_spec.rb +0 -1
- data/spec/mongoid/inspectable_spec.rb +0 -1
- data/spec/mongoid/interceptable_spec.rb +102 -95
- data/spec/mongoid/loggable_spec.rb +0 -1
- data/spec/mongoid/matcher/extract_attribute_spec.rb +5 -2
- data/spec/mongoid/persistable/creatable_spec.rb +2 -3
- data/spec/mongoid/persistable/deletable_spec.rb +18 -19
- data/spec/mongoid/persistable/destroyable_spec.rb +8 -9
- data/spec/mongoid/persistable/incrementable_spec.rb +8 -9
- data/spec/mongoid/persistable/logical_spec.rb +4 -5
- data/spec/mongoid/persistable/poppable_spec.rb +4 -5
- data/spec/mongoid/persistable/pullable_spec.rb +8 -9
- data/spec/mongoid/persistable/pushable_spec.rb +8 -9
- data/spec/mongoid/persistable/renamable_spec.rb +3 -4
- data/spec/mongoid/persistable/savable_spec.rb +15 -11
- data/spec/mongoid/persistable/settable_spec.rb +9 -10
- data/spec/mongoid/persistable/unsettable_spec.rb +4 -5
- data/spec/mongoid/persistable/updatable_spec.rb +43 -24
- data/spec/mongoid/persistable/upsertable_spec.rb +1 -2
- data/spec/mongoid/persistable_spec.rb +1 -2
- data/spec/mongoid/persistence_context_spec.rb +0 -1
- data/spec/mongoid/positional_spec.rb +0 -1
- data/spec/mongoid/query_cache_middleware_spec.rb +1 -2
- data/spec/mongoid/query_cache_spec.rb +56 -10
- data/spec/mongoid/relations/proxy_spec.rb +6 -7
- data/spec/mongoid/reloadable_spec.rb +209 -23
- data/spec/mongoid/scopable_spec.rb +65 -22
- data/spec/mongoid/selectable_spec.rb +6 -7
- data/spec/mongoid/serializable_spec.rb +9 -10
- data/spec/mongoid/shardable_spec.rb +2 -3
- data/spec/mongoid/stateful_spec.rb +1 -2
- data/spec/mongoid/tasks/database_rake_spec.rb +0 -1
- data/spec/mongoid/tasks/database_spec.rb +0 -1
- data/spec/mongoid/threaded_spec.rb +2 -3
- data/spec/mongoid/timestamps/created/short_spec.rb +1 -2
- data/spec/mongoid/timestamps/created_spec.rb +1 -2
- data/spec/mongoid/timestamps/timeless_spec.rb +2 -3
- data/spec/mongoid/timestamps/updated/short_spec.rb +3 -4
- data/spec/mongoid/timestamps/updated_spec.rb +3 -4
- data/spec/mongoid/timestamps_spec.rb +6 -7
- data/spec/mongoid/touchable_spec.rb +33 -20
- data/spec/mongoid/touchable_spec_models.rb +2 -1
- data/spec/mongoid/traversable_spec.rb +65 -2
- data/spec/mongoid/validatable/associated_spec.rb +0 -1
- data/spec/mongoid/validatable/format_spec.rb +0 -1
- data/spec/mongoid/validatable/length_spec.rb +0 -1
- data/spec/mongoid/validatable/numericality_spec.rb +0 -1
- data/spec/mongoid/validatable/presence_spec.rb +26 -23
- data/spec/mongoid/validatable/uniqueness_spec.rb +67 -68
- data/spec/mongoid/validatable_spec.rb +2 -3
- data/spec/mongoid_spec.rb +0 -1
- data/spec/rails/controller_extension/controller_runtime_spec.rb +0 -1
- data/spec/rails/mongoid_spec.rb +0 -1
- data/spec/shared/lib/mrss/cluster_config.rb +6 -1
- data/spec/shared/lib/mrss/constraints.rb +23 -5
- data/spec/shared/lib/mrss/docker_runner.rb +1 -1
- data/spec/shared/lib/mrss/event_subscriber.rb +200 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +8 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +17 -12
- data/spec/shared/lib/mrss/session_registry.rb +69 -0
- data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
- data/spec/shared/share/Dockerfile.erb +27 -10
- data/spec/shared/shlib/distro.sh +2 -1
- data/spec/shared/shlib/server.sh +85 -23
- data/spec/shared/shlib/set_env.sh +6 -5
- data/spec/spec_helper.rb +12 -22
- data/spec/support/authorization.rb +0 -1
- data/spec/support/constraints.rb +0 -1
- data/spec/support/expectations.rb +0 -1
- data/spec/support/macros.rb +22 -1
- data/spec/support/models/account.rb +1 -2
- data/spec/support/models/acolyte.rb +0 -1
- data/spec/support/models/actor.rb +0 -1
- data/spec/support/models/actress.rb +0 -1
- data/spec/support/models/address.rb +0 -1
- data/spec/support/models/address_component.rb +0 -1
- data/spec/support/models/address_number.rb +0 -1
- data/spec/support/models/agency.rb +0 -1
- data/spec/support/models/agent.rb +0 -1
- data/spec/support/models/album.rb +0 -1
- data/spec/support/models/alert.rb +0 -1
- data/spec/support/models/animal.rb +0 -1
- data/spec/support/models/answer.rb +0 -1
- data/spec/support/models/appointment.rb +0 -1
- data/spec/support/models/armrest.rb +0 -1
- data/spec/support/models/array_field.rb +0 -1
- data/spec/support/models/article.rb +0 -1
- data/spec/support/models/artist.rb +2 -1
- data/spec/support/models/artwork.rb +0 -1
- data/spec/support/models/audible_sound.rb +3 -0
- data/spec/support/models/audio.rb +0 -1
- data/spec/support/models/augmentation.rb +0 -1
- data/spec/support/models/author.rb +0 -1
- data/spec/support/models/baby.rb +0 -1
- data/spec/support/models/band.rb +4 -1
- data/spec/support/models/bar.rb +0 -1
- data/spec/support/models/basic.rb +0 -1
- data/spec/support/models/bed.rb +0 -1
- data/spec/support/models/big_palette.rb +0 -1
- data/spec/support/models/birthday.rb +0 -1
- data/spec/support/models/bolt.rb +0 -1
- data/spec/support/models/bomb.rb +0 -1
- data/spec/support/models/book.rb +0 -1
- data/spec/support/models/breed.rb +0 -1
- data/spec/support/models/browser.rb +0 -1
- data/spec/support/models/building.rb +0 -1
- data/spec/support/models/building_address.rb +0 -1
- data/spec/support/models/bus.rb +0 -1
- data/spec/support/models/business.rb +0 -1
- data/spec/support/models/callback_test.rb +0 -1
- data/spec/support/models/canvas.rb +0 -1
- data/spec/support/models/car.rb +0 -1
- data/spec/support/models/cat.rb +0 -1
- data/spec/support/models/category.rb +0 -1
- data/spec/support/models/child.rb +0 -1
- data/spec/support/models/child_doc.rb +3 -4
- data/spec/support/models/church.rb +0 -1
- data/spec/support/models/circle.rb +0 -1
- data/spec/support/models/circuit.rb +0 -1
- data/spec/support/models/circus.rb +0 -1
- data/spec/support/models/code.rb +0 -1
- data/spec/support/models/coding/pull_request.rb +0 -1
- data/spec/support/models/coding.rb +0 -1
- data/spec/support/models/comment.rb +0 -1
- data/spec/support/models/company.rb +0 -1
- data/spec/support/models/consumption_period.rb +0 -1
- data/spec/support/models/contextable_item.rb +0 -1
- data/spec/support/models/contractor.rb +0 -1
- data/spec/support/models/cookie.rb +0 -1
- data/spec/support/models/country_code.rb +2 -1
- data/spec/support/models/courier_job.rb +0 -1
- data/spec/support/models/crate.rb +0 -1
- data/spec/support/models/customer.rb +0 -1
- data/spec/support/models/customer_address.rb +0 -1
- data/spec/support/models/deed.rb +0 -1
- data/spec/support/models/definition.rb +0 -1
- data/spec/support/models/delegating_patient.rb +0 -1
- data/spec/support/models/description.rb +0 -1
- data/spec/support/models/dictionary.rb +0 -1
- data/spec/support/models/division.rb +0 -1
- data/spec/support/models/doctor.rb +0 -1
- data/spec/support/models/dog.rb +0 -1
- data/spec/support/models/dokument.rb +0 -1
- data/spec/support/models/draft.rb +0 -1
- data/spec/support/models/dragon.rb +0 -1
- data/spec/support/models/driver.rb +0 -1
- data/spec/support/models/drug.rb +0 -1
- data/spec/support/models/dungeon.rb +0 -1
- data/spec/support/models/edit.rb +0 -1
- data/spec/support/models/email.rb +0 -1
- data/spec/support/models/employer.rb +0 -1
- data/spec/support/models/entry.rb +0 -1
- data/spec/support/models/eraser.rb +0 -1
- data/spec/support/models/even.rb +0 -1
- data/spec/support/models/event.rb +0 -1
- data/spec/support/models/exhibition.rb +0 -1
- data/spec/support/models/exhibitor.rb +0 -1
- data/spec/support/models/explosion.rb +0 -1
- data/spec/support/models/eye.rb +0 -1
- data/spec/support/models/eye_bowl.rb +0 -1
- data/spec/support/models/face.rb +0 -1
- data/spec/support/models/favorite.rb +0 -1
- data/spec/support/models/filesystem.rb +0 -1
- data/spec/support/models/fire_hydrant.rb +0 -1
- data/spec/support/models/firefox.rb +0 -1
- data/spec/support/models/fish.rb +0 -1
- data/spec/support/models/folder.rb +0 -1
- data/spec/support/models/folder_item.rb +0 -1
- data/spec/support/models/fruits.rb +0 -1
- data/spec/support/models/game.rb +0 -1
- data/spec/support/models/ghost.rb +0 -1
- data/spec/support/models/guitar.rb +0 -1
- data/spec/support/models/hole.rb +0 -1
- data/spec/support/models/home.rb +0 -1
- data/spec/support/models/house.rb +0 -1
- data/spec/support/models/html_writer.rb +0 -1
- data/spec/support/models/id_key.rb +0 -1
- data/spec/support/models/idnodef.rb +0 -1
- data/spec/support/models/image.rb +0 -1
- data/spec/support/models/implant.rb +0 -1
- data/spec/support/models/instrument.rb +0 -1
- data/spec/support/models/item.rb +0 -1
- data/spec/support/models/jar.rb +0 -1
- data/spec/support/models/kaleidoscope.rb +0 -1
- data/spec/support/models/kangaroo.rb +0 -1
- data/spec/support/models/label.rb +2 -2
- data/spec/support/models/language.rb +0 -1
- data/spec/support/models/lat_lng.rb +0 -1
- data/spec/support/models/league.rb +0 -1
- data/spec/support/models/learner.rb +0 -1
- data/spec/support/models/line_item.rb +0 -1
- data/spec/support/models/location.rb +0 -1
- data/spec/support/models/login.rb +0 -1
- data/spec/support/models/manufacturer.rb +0 -1
- data/spec/support/models/meat.rb +0 -1
- data/spec/support/models/membership.rb +0 -1
- data/spec/support/models/message.rb +0 -1
- data/spec/support/models/minim.rb +0 -1
- data/spec/support/models/mixed_drink.rb +0 -1
- data/spec/support/models/mop.rb +0 -1
- data/spec/support/models/movie.rb +0 -1
- data/spec/support/models/my_hash.rb +0 -1
- data/spec/support/models/name.rb +0 -1
- data/spec/support/models/name_only.rb +0 -1
- data/spec/support/models/node.rb +0 -1
- data/spec/support/models/note.rb +0 -1
- data/spec/support/models/nut.rb +0 -1
- data/spec/support/models/odd.rb +0 -1
- data/spec/support/models/order.rb +2 -1
- data/spec/support/models/ordered_post.rb +1 -2
- data/spec/support/models/ordered_preference.rb +0 -1
- data/spec/support/models/oscar.rb +0 -1
- data/spec/support/models/other_owner_object.rb +0 -1
- data/spec/support/models/override.rb +0 -1
- data/spec/support/models/ownable.rb +0 -1
- data/spec/support/models/owner.rb +0 -1
- data/spec/support/models/pack.rb +0 -1
- data/spec/support/models/page.rb +0 -1
- data/spec/support/models/page_question.rb +0 -1
- data/spec/support/models/palette.rb +0 -1
- data/spec/support/models/parent.rb +0 -1
- data/spec/support/models/parent_doc.rb +0 -1
- data/spec/support/models/passport.rb +5 -1
- data/spec/support/models/patient.rb +0 -1
- data/spec/support/models/pdf_writer.rb +0 -1
- data/spec/support/models/pencil.rb +0 -1
- data/spec/support/models/person.rb +1 -1
- data/spec/support/models/pet.rb +0 -1
- data/spec/support/models/pet_owner.rb +0 -1
- data/spec/support/models/phone.rb +2 -2
- data/spec/support/models/piano.rb +0 -1
- data/spec/support/models/pizza.rb +0 -1
- data/spec/support/models/player.rb +0 -1
- data/spec/support/models/post.rb +0 -1
- data/spec/support/models/post_genre.rb +0 -1
- data/spec/support/models/powerup.rb +0 -1
- data/spec/support/models/preference.rb +0 -1
- data/spec/support/models/princess.rb +0 -1
- data/spec/support/models/product.rb +0 -1
- data/spec/support/models/profile.rb +0 -1
- data/spec/support/models/pronunciation.rb +0 -1
- data/spec/support/models/pub.rb +0 -1
- data/spec/support/models/publication/encyclopedia.rb +0 -1
- data/spec/support/models/publication/review.rb +0 -1
- data/spec/support/models/publication.rb +0 -1
- data/spec/support/models/purchase.rb +0 -1
- data/spec/support/models/purchased_item.rb +10 -0
- data/spec/support/models/question.rb +0 -1
- data/spec/support/models/quiz.rb +0 -1
- data/spec/support/models/rating.rb +0 -1
- data/spec/support/models/record.rb +0 -1
- data/spec/support/models/registry.rb +0 -1
- data/spec/support/models/role.rb +0 -1
- data/spec/support/models/root_category.rb +0 -1
- data/spec/support/models/sandwich.rb +0 -1
- data/spec/support/models/scheduler.rb +0 -1
- data/spec/support/models/scribe.rb +0 -1
- data/spec/support/models/sealer.rb +0 -1
- data/spec/support/models/seat.rb +0 -1
- data/spec/support/models/seo.rb +0 -1
- data/spec/support/models/series.rb +0 -1
- data/spec/support/models/server.rb +0 -1
- data/spec/support/models/service.rb +0 -1
- data/spec/support/models/shape.rb +0 -1
- data/spec/support/models/shelf.rb +0 -1
- data/spec/support/models/shipment_address.rb +0 -1
- data/spec/support/models/shipping_container.rb +0 -1
- data/spec/support/models/shipping_pack.rb +0 -1
- data/spec/support/models/shirt.rb +0 -1
- data/spec/support/models/shop.rb +0 -1
- data/spec/support/models/short_agent.rb +0 -1
- data/spec/support/models/short_quiz.rb +0 -1
- data/spec/support/models/simple.rb +0 -1
- data/spec/support/models/slave.rb +0 -1
- data/spec/support/models/song.rb +0 -1
- data/spec/support/models/sound.rb +0 -1
- data/spec/support/models/spacer.rb +0 -1
- data/spec/support/models/square.rb +0 -1
- data/spec/support/models/staff.rb +0 -1
- data/spec/support/models/store_as_dup_test1.rb +0 -1
- data/spec/support/models/store_as_dup_test2.rb +0 -1
- data/spec/support/models/store_as_dup_test3.rb +0 -1
- data/spec/support/models/store_as_dup_test4.rb +0 -1
- data/spec/support/models/strategy.rb +0 -1
- data/spec/support/models/sub_item.rb +0 -1
- data/spec/support/models/subscription.rb +0 -1
- data/spec/support/models/survey.rb +0 -1
- data/spec/support/models/symptom.rb +0 -1
- data/spec/support/models/tag.rb +0 -1
- data/spec/support/models/target.rb +0 -1
- data/spec/support/models/template.rb +0 -1
- data/spec/support/models/thing.rb +0 -1
- data/spec/support/models/threadlocker.rb +0 -1
- data/spec/support/models/title.rb +0 -1
- data/spec/support/models/tool.rb +0 -1
- data/spec/support/models/topping.rb +0 -1
- data/spec/support/models/toy.rb +0 -1
- data/spec/support/models/track.rb +0 -1
- data/spec/support/models/translation.rb +0 -1
- data/spec/support/models/tree.rb +0 -1
- data/spec/support/models/truck.rb +0 -1
- data/spec/support/models/updatable.rb +0 -1
- data/spec/support/models/user.rb +0 -1
- data/spec/support/models/user_account.rb +0 -1
- data/spec/support/models/validation_callback.rb +0 -1
- data/spec/support/models/vehicle.rb +0 -1
- data/spec/support/models/version.rb +0 -1
- data/spec/support/models/vertex.rb +0 -1
- data/spec/support/models/vet_visit.rb +0 -1
- data/spec/support/models/video.rb +0 -1
- data/spec/support/models/video_game.rb +0 -1
- data/spec/support/models/washer.rb +0 -1
- data/spec/support/models/weapon.rb +0 -1
- data/spec/support/models/wiki_page.rb +0 -1
- data/spec/support/models/word.rb +0 -1
- data/spec/support/models/word_origin.rb +0 -1
- data/spec/support/models/writer.rb +0 -1
- data/spec/support/shared/time.rb +0 -1
- data/spec/support/spec_config.rb +3 -1
- data.tar.gz.sig +0 -0
- metadata +642 -610
- metadata.gz.sig +0 -0
- data/lib/support/ruby_version.rb +0 -29
- data/spec/support/session_registry.rb +0 -50
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
class Criteria
|
|
@@ -12,18 +11,12 @@ module Mongoid
|
|
|
12
11
|
extend Macroable
|
|
13
12
|
|
|
14
13
|
# Constant for a LineString $geometry.
|
|
15
|
-
#
|
|
16
|
-
# @since 2.0.0
|
|
17
14
|
LINE_STRING = "LineString"
|
|
18
15
|
|
|
19
16
|
# Constant for a Point $geometry.
|
|
20
|
-
#
|
|
21
|
-
# @since 2.0.0
|
|
22
17
|
POINT = "Point"
|
|
23
18
|
|
|
24
19
|
# Constant for a Polygon $geometry.
|
|
25
|
-
#
|
|
26
|
-
# @since 2.0.0
|
|
27
20
|
POLYGON = "Polygon"
|
|
28
21
|
|
|
29
22
|
# @attribute [rw] negating If the next expression is negated.
|
|
@@ -41,8 +34,6 @@ module Mongoid
|
|
|
41
34
|
# @param [ Hash ] criterion The key value pairs for $all matching.
|
|
42
35
|
#
|
|
43
36
|
# @return [ Selectable ] The cloned selectable.
|
|
44
|
-
#
|
|
45
|
-
# @since 1.0.0
|
|
46
37
|
def all(*criteria)
|
|
47
38
|
if criteria.empty?
|
|
48
39
|
return clone.tap do |query|
|
|
@@ -82,8 +73,6 @@ module Mongoid
|
|
|
82
73
|
# matches or Criteria objects that all must match to return results.
|
|
83
74
|
#
|
|
84
75
|
# @return [ Selectable ] The new selectable.
|
|
85
|
-
#
|
|
86
|
-
# @since 1.0.0
|
|
87
76
|
def and(*criteria)
|
|
88
77
|
_mongoid_flatten_arrays(criteria).inject(self.clone) do |c, new_s|
|
|
89
78
|
if new_s.is_a?(Selectable)
|
|
@@ -130,8 +119,6 @@ module Mongoid
|
|
|
130
119
|
# @param [ Hash ] criterion Multiple key/range pairs.
|
|
131
120
|
#
|
|
132
121
|
# @return [ Selectable ] The cloned selectable.
|
|
133
|
-
#
|
|
134
|
-
# @since 1.0.0
|
|
135
122
|
def between(criterion)
|
|
136
123
|
if criterion.nil?
|
|
137
124
|
raise Errors::CriteriaArgumentRequired, :between
|
|
@@ -162,8 +149,6 @@ module Mongoid
|
|
|
162
149
|
# @param [ Hash ] criterion The field/match pairs.
|
|
163
150
|
#
|
|
164
151
|
# @return [ Selectable ] The cloned selectable.
|
|
165
|
-
#
|
|
166
|
-
# @since 1.0.0
|
|
167
152
|
def elem_match(criterion)
|
|
168
153
|
if criterion.nil?
|
|
169
154
|
raise Errors::CriteriaArgumentRequired, :elem_match
|
|
@@ -187,8 +172,6 @@ module Mongoid
|
|
|
187
172
|
# @param [ Hash ] criterion The field/boolean existence checks.
|
|
188
173
|
#
|
|
189
174
|
# @return [ Selectable ] The cloned selectable.
|
|
190
|
-
#
|
|
191
|
-
# @since 1.0.0
|
|
192
175
|
def exists(criterion)
|
|
193
176
|
if criterion.nil?
|
|
194
177
|
raise Errors::CriteriaArgumentRequired, :exists
|
|
@@ -271,6 +254,26 @@ module Mongoid
|
|
|
271
254
|
end
|
|
272
255
|
key :within_box, :override, "$geoWithin", "$box"
|
|
273
256
|
|
|
257
|
+
# Add the $eq criterion to the selector.
|
|
258
|
+
#
|
|
259
|
+
# @example Add the $eq criterion.
|
|
260
|
+
# selectable.eq(age: 60)
|
|
261
|
+
#
|
|
262
|
+
# @example Execute an $eq in a where query.
|
|
263
|
+
# selectable.where(:field.eq => 10)
|
|
264
|
+
#
|
|
265
|
+
# @param [ Hash ] criterion The field/value pairs to check.
|
|
266
|
+
#
|
|
267
|
+
# @return [ Selectable ] The cloned selectable.
|
|
268
|
+
def eq(criterion)
|
|
269
|
+
if criterion.nil?
|
|
270
|
+
raise Errors::CriteriaArgumentRequired, :eq
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
__override__(criterion, "$eq")
|
|
274
|
+
end
|
|
275
|
+
key :eq, :override, "$eq"
|
|
276
|
+
|
|
274
277
|
# Add the $gt criterion to the selector.
|
|
275
278
|
#
|
|
276
279
|
# @example Add the $gt criterion.
|
|
@@ -282,8 +285,6 @@ module Mongoid
|
|
|
282
285
|
# @param [ Hash ] criterion The field/value pairs to check.
|
|
283
286
|
#
|
|
284
287
|
# @return [ Selectable ] The cloned selectable.
|
|
285
|
-
#
|
|
286
|
-
# @since 1.0.0
|
|
287
288
|
def gt(criterion)
|
|
288
289
|
if criterion.nil?
|
|
289
290
|
raise Errors::CriteriaArgumentRequired, :gt
|
|
@@ -304,8 +305,6 @@ module Mongoid
|
|
|
304
305
|
# @param [ Hash ] criterion The field/value pairs to check.
|
|
305
306
|
#
|
|
306
307
|
# @return [ Selectable ] The cloned selectable.
|
|
307
|
-
#
|
|
308
|
-
# @since 1.0.0
|
|
309
308
|
def gte(criterion)
|
|
310
309
|
if criterion.nil?
|
|
311
310
|
raise Errors::CriteriaArgumentRequired, :gte
|
|
@@ -329,8 +328,6 @@ module Mongoid
|
|
|
329
328
|
# @param [ Hash ] condition The field/value criterion pairs.
|
|
330
329
|
#
|
|
331
330
|
# @return [ Selectable ] The cloned selectable.
|
|
332
|
-
#
|
|
333
|
-
# @since 1.0.0
|
|
334
331
|
def in(condition)
|
|
335
332
|
if condition.nil?
|
|
336
333
|
raise Errors::CriteriaArgumentRequired, :in
|
|
@@ -364,8 +361,6 @@ module Mongoid
|
|
|
364
361
|
# @param [ Hash ] criterion The field/value pairs to check.
|
|
365
362
|
#
|
|
366
363
|
# @return [ Selectable ] The cloned selectable.
|
|
367
|
-
#
|
|
368
|
-
# @since 1.0.0
|
|
369
364
|
def lt(criterion)
|
|
370
365
|
if criterion.nil?
|
|
371
366
|
raise Errors::CriteriaArgumentRequired, :lt
|
|
@@ -386,8 +381,6 @@ module Mongoid
|
|
|
386
381
|
# @param [ Hash ] criterion The field/value pairs to check.
|
|
387
382
|
#
|
|
388
383
|
# @return [ Selectable ] The cloned selectable.
|
|
389
|
-
#
|
|
390
|
-
# @since 1.0.0
|
|
391
384
|
def lte(criterion)
|
|
392
385
|
if criterion.nil?
|
|
393
386
|
raise Errors::CriteriaArgumentRequired, :lte
|
|
@@ -405,8 +398,6 @@ module Mongoid
|
|
|
405
398
|
# @param [ Hash ] criterion The field/distance pairs.
|
|
406
399
|
#
|
|
407
400
|
# @return [ Selectable ] The cloned selectable.
|
|
408
|
-
#
|
|
409
|
-
# @since 1.0.0
|
|
410
401
|
def max_distance(criterion)
|
|
411
402
|
if criterion.nil?
|
|
412
403
|
raise Errors::CriteriaArgumentRequired, :max_distance
|
|
@@ -427,8 +418,6 @@ module Mongoid
|
|
|
427
418
|
# @param [ Hash ] criterion The field/mod selections.
|
|
428
419
|
#
|
|
429
420
|
# @return [ Selectable ] The cloned selectable.
|
|
430
|
-
#
|
|
431
|
-
# @since 1.0.0
|
|
432
421
|
def mod(criterion)
|
|
433
422
|
if criterion.nil?
|
|
434
423
|
raise Errors::CriteriaArgumentRequired, :mod
|
|
@@ -449,8 +438,6 @@ module Mongoid
|
|
|
449
438
|
# @param [ Hash ] criterion The field/ne selections.
|
|
450
439
|
#
|
|
451
440
|
# @return [ Selectable ] The cloned selectable.
|
|
452
|
-
#
|
|
453
|
-
# @since 1.0.0
|
|
454
441
|
def ne(criterion)
|
|
455
442
|
if criterion.nil?
|
|
456
443
|
raise Errors::CriteriaArgumentRequired, :ne
|
|
@@ -472,8 +459,6 @@ module Mongoid
|
|
|
472
459
|
# @param [ Hash ] criterion The field/location pair.
|
|
473
460
|
#
|
|
474
461
|
# @return [ Selectable ] The cloned selectable.
|
|
475
|
-
#
|
|
476
|
-
# @since 1.0.0
|
|
477
462
|
def near(criterion)
|
|
478
463
|
if criterion.nil?
|
|
479
464
|
raise Errors::CriteriaArgumentRequired, :near
|
|
@@ -494,8 +479,6 @@ module Mongoid
|
|
|
494
479
|
# @param [ Hash ] criterion The field/location pair.
|
|
495
480
|
#
|
|
496
481
|
# @return [ Selectable ] The cloned selectable.
|
|
497
|
-
#
|
|
498
|
-
# @since 1.0.0
|
|
499
482
|
def near_sphere(criterion)
|
|
500
483
|
if criterion.nil?
|
|
501
484
|
raise Errors::CriteriaArgumentRequired, :near_sphere
|
|
@@ -519,8 +502,6 @@ module Mongoid
|
|
|
519
502
|
# @param [ Hash ] condition The field/value criterion pairs.
|
|
520
503
|
#
|
|
521
504
|
# @return [ Selectable ] The cloned selectable.
|
|
522
|
-
#
|
|
523
|
-
# @since 1.0.0
|
|
524
505
|
def nin(condition)
|
|
525
506
|
if condition.nil?
|
|
526
507
|
raise Errors::CriteriaArgumentRequired, :nin
|
|
@@ -552,8 +533,6 @@ module Mongoid
|
|
|
552
533
|
# matches or Criteria objects.
|
|
553
534
|
#
|
|
554
535
|
# @return [ Selectable ] The new selectable.
|
|
555
|
-
#
|
|
556
|
-
# @since 1.0.0
|
|
557
536
|
def nor(*criteria)
|
|
558
537
|
_mongoid_add_top_level_operation('$nor', criteria)
|
|
559
538
|
end
|
|
@@ -564,8 +543,6 @@ module Mongoid
|
|
|
564
543
|
# selectable.negating?
|
|
565
544
|
#
|
|
566
545
|
# @return [ true, false ] If the selectable is negating.
|
|
567
|
-
#
|
|
568
|
-
# @since 1.0.0
|
|
569
546
|
def negating?
|
|
570
547
|
!!negating
|
|
571
548
|
end
|
|
@@ -585,8 +562,6 @@ module Mongoid
|
|
|
585
562
|
# matches or Criteria objects to negate.
|
|
586
563
|
#
|
|
587
564
|
# @return [ Selectable ] The new selectable.
|
|
588
|
-
#
|
|
589
|
-
# @since 1.0.0
|
|
590
565
|
def not(*criteria)
|
|
591
566
|
if criteria.empty?
|
|
592
567
|
dup.tap { |query| query.negating = true }
|
|
@@ -597,7 +572,7 @@ module Mongoid
|
|
|
597
572
|
end
|
|
598
573
|
_mongoid_expand_keys(new_s).each do |k, v|
|
|
599
574
|
k = k.to_s
|
|
600
|
-
if c.selector[k] || k
|
|
575
|
+
if c.selector[k] || k.start_with?('$')
|
|
601
576
|
c = c.send(:__multi__, [{'$nor' => [{k => v}]}], '$and')
|
|
602
577
|
else
|
|
603
578
|
if v.is_a?(Hash)
|
|
@@ -648,8 +623,6 @@ module Mongoid
|
|
|
648
623
|
# thereof. Passing arrays is deprecated.
|
|
649
624
|
#
|
|
650
625
|
# @return [ Selectable ] The new selectable.
|
|
651
|
-
#
|
|
652
|
-
# @since 1.0.0
|
|
653
626
|
def or(*criteria)
|
|
654
627
|
_mongoid_add_top_level_operation('$or', criteria)
|
|
655
628
|
end
|
|
@@ -680,8 +653,6 @@ module Mongoid
|
|
|
680
653
|
# thereof. Passing arrays is deprecated.
|
|
681
654
|
#
|
|
682
655
|
# @return [ Selectable ] The new selectable.
|
|
683
|
-
#
|
|
684
|
-
# @since 1.0.0
|
|
685
656
|
def any_of(*criteria)
|
|
686
657
|
criteria = _mongoid_flatten_arrays(criteria)
|
|
687
658
|
case criteria.length
|
|
@@ -735,8 +706,6 @@ module Mongoid
|
|
|
735
706
|
# @param [ Hash ] criterion The field/size pairs criterion.
|
|
736
707
|
#
|
|
737
708
|
# @return [ Selectable ] The cloned selectable.
|
|
738
|
-
#
|
|
739
|
-
# @since 1.0.0
|
|
740
709
|
def with_size(criterion)
|
|
741
710
|
if criterion.nil?
|
|
742
711
|
raise Errors::CriteriaArgumentRequired, :with_size
|
|
@@ -763,8 +732,6 @@ module Mongoid
|
|
|
763
732
|
# @param [ Hash ] criterion The field/type pairs.
|
|
764
733
|
#
|
|
765
734
|
# @return [ Selectable ] The cloned selectable.
|
|
766
|
-
#
|
|
767
|
-
# @since 1.0.0
|
|
768
735
|
def with_type(criterion)
|
|
769
736
|
if criterion.nil?
|
|
770
737
|
raise Errors::CriteriaArgumentRequired, :with_type
|
|
@@ -797,8 +764,6 @@ module Mongoid
|
|
|
797
764
|
# for options.
|
|
798
765
|
#
|
|
799
766
|
# @return [ Selectable ] The cloned selectable.
|
|
800
|
-
#
|
|
801
|
-
# @since 2.2.0
|
|
802
767
|
def text_search(terms, opts = nil)
|
|
803
768
|
if terms.nil?
|
|
804
769
|
raise Errors::CriteriaArgumentRequired, :terms
|
|
@@ -834,8 +799,6 @@ module Mongoid
|
|
|
834
799
|
# @param [ String, Hash ] criterion The javascript or standard selection.
|
|
835
800
|
#
|
|
836
801
|
# @return [ Selectable ] The cloned selectable.
|
|
837
|
-
#
|
|
838
|
-
# @since 1.0.0
|
|
839
802
|
def where(*criteria)
|
|
840
803
|
criteria.inject(clone) do |query, criterion|
|
|
841
804
|
if criterion.nil?
|
|
@@ -875,8 +838,6 @@ module Mongoid
|
|
|
875
838
|
# @param [ Hash ] criterion The field/value pairs.
|
|
876
839
|
#
|
|
877
840
|
# @return [ Selectable ] The cloned selectable.
|
|
878
|
-
#
|
|
879
|
-
# @since 1.0.0
|
|
880
841
|
# @api private
|
|
881
842
|
def expr_query(criterion)
|
|
882
843
|
if criterion.nil?
|
|
@@ -890,7 +851,7 @@ module Mongoid
|
|
|
890
851
|
clone.tap do |query|
|
|
891
852
|
normalized.each do |field, value|
|
|
892
853
|
field_s = field.to_s
|
|
893
|
-
if field_s
|
|
854
|
+
if field_s.start_with?('$')
|
|
894
855
|
# Query expression-level operator, like $and or $where
|
|
895
856
|
query.add_operator_expression(field_s, value)
|
|
896
857
|
else
|
|
@@ -911,8 +872,6 @@ module Mongoid
|
|
|
911
872
|
# end
|
|
912
873
|
#
|
|
913
874
|
# @param [ Hash ] criterion The criterion.
|
|
914
|
-
#
|
|
915
|
-
# @since 1.0.0
|
|
916
875
|
def typed_override(criterion, operator)
|
|
917
876
|
if criterion
|
|
918
877
|
criterion.update_values do |value|
|
|
@@ -932,8 +891,6 @@ module Mongoid
|
|
|
932
891
|
# @param [ String ] criterion The javascript as a string.
|
|
933
892
|
#
|
|
934
893
|
# @return [ Selectable ] The cloned selectable
|
|
935
|
-
#
|
|
936
|
-
# @since 1.0.0
|
|
937
894
|
def js_query(criterion)
|
|
938
895
|
clone.tap do |query|
|
|
939
896
|
if negating?
|
|
@@ -955,8 +912,6 @@ module Mongoid
|
|
|
955
912
|
# @param [ Hash ] criterion The selection to store.
|
|
956
913
|
#
|
|
957
914
|
# @return [ Selectable ] The cloned selectable.
|
|
958
|
-
#
|
|
959
|
-
# @since 1.0.0
|
|
960
915
|
# @api private
|
|
961
916
|
def selection(criterion = nil)
|
|
962
917
|
clone.tap do |query|
|
|
@@ -977,8 +932,6 @@ module Mongoid
|
|
|
977
932
|
# Selectable.forwardables
|
|
978
933
|
#
|
|
979
934
|
# @return [ Array<Symbol> ] The names of the forwardable methods.
|
|
980
|
-
#
|
|
981
|
-
# @since 1.0.0
|
|
982
935
|
def forwardables
|
|
983
936
|
public_instance_methods(false) -
|
|
984
937
|
[ :negating, :negating=, :negating?, :selector, :selector= ]
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
class Criteria
|
|
@@ -17,8 +16,6 @@ module Mongoid
|
|
|
17
16
|
# @param [ Hash, Selector ] other The object to merge in.
|
|
18
17
|
#
|
|
19
18
|
# @return [ Selector ] The selector.
|
|
20
|
-
#
|
|
21
|
-
# @since 1.0.0
|
|
22
19
|
def merge!(other)
|
|
23
20
|
other.each_pair do |key, value|
|
|
24
21
|
if value.is_a?(Hash) && self[key.to_s].is_a?(Hash)
|
|
@@ -50,8 +47,6 @@ module Mongoid
|
|
|
50
47
|
# @param [ Object ] value The value to add.
|
|
51
48
|
#
|
|
52
49
|
# @return [ Object ] The stored object.
|
|
53
|
-
#
|
|
54
|
-
# @since 1.0.0
|
|
55
50
|
def store(key, value)
|
|
56
51
|
name, serializer = storage_pair(key)
|
|
57
52
|
if multi_selection?(name)
|
|
@@ -71,8 +66,6 @@ module Mongoid
|
|
|
71
66
|
# selector.to_pipeline
|
|
72
67
|
#
|
|
73
68
|
# @return [ Array<Hash> ] The pipeline entry for the selector.
|
|
74
|
-
#
|
|
75
|
-
# @since 2.0.0
|
|
76
69
|
def to_pipeline
|
|
77
70
|
pipeline = []
|
|
78
71
|
pipeline.push({ "$match" => self }) unless empty?
|
|
@@ -91,8 +84,6 @@ module Mongoid
|
|
|
91
84
|
#
|
|
92
85
|
# @return [ Array<Hash> ] The serialized values.
|
|
93
86
|
#
|
|
94
|
-
# @since 1.0.0
|
|
95
|
-
#
|
|
96
87
|
# @api private
|
|
97
88
|
def evolve_multi(specs)
|
|
98
89
|
unless specs.is_a?(Array)
|
|
@@ -142,8 +133,6 @@ module Mongoid
|
|
|
142
133
|
# @param [ Object ] value The value to serialize.
|
|
143
134
|
#
|
|
144
135
|
# @return [ Object ] The serialized object.
|
|
145
|
-
#
|
|
146
|
-
# @since 1.0.0
|
|
147
136
|
def evolve(serializer, value)
|
|
148
137
|
case value
|
|
149
138
|
when Hash
|
|
@@ -166,8 +155,6 @@ module Mongoid
|
|
|
166
155
|
# @param [ Array<Object> ] value The array to serialize.
|
|
167
156
|
#
|
|
168
157
|
# @return [ Object ] The serialized array.
|
|
169
|
-
#
|
|
170
|
-
# @since 1.0.0
|
|
171
158
|
def evolve_array(serializer, value)
|
|
172
159
|
value.map do |_value|
|
|
173
160
|
evolve(serializer, _value)
|
|
@@ -185,8 +172,6 @@ module Mongoid
|
|
|
185
172
|
# @param [ Hash ] value The hash to serialize.
|
|
186
173
|
#
|
|
187
174
|
# @return [ Object ] The serialized hash.
|
|
188
|
-
#
|
|
189
|
-
# @since 1.0.0
|
|
190
175
|
def evolve_hash(serializer, value)
|
|
191
176
|
value.each_pair do |operator, _value|
|
|
192
177
|
if operator =~ /exists|type|size/
|
|
@@ -208,8 +193,6 @@ module Mongoid
|
|
|
208
193
|
# @param [ String ] key The key to check.
|
|
209
194
|
#
|
|
210
195
|
# @return [ true, false ] If the key is for a multi-select.
|
|
211
|
-
#
|
|
212
|
-
# @since 1.0.0
|
|
213
196
|
def multi_selection?(key)
|
|
214
197
|
%w($and $or $nor).include?(key)
|
|
215
198
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
class Criteria
|
|
@@ -18,8 +17,6 @@ module Mongoid
|
|
|
18
17
|
# smash.__deep_copy__
|
|
19
18
|
#
|
|
20
19
|
# @return [ Smash ] The copied hash.
|
|
21
|
-
#
|
|
22
|
-
# @since 1.0.0
|
|
23
20
|
def __deep_copy__
|
|
24
21
|
self.class.new(aliases, serializers) do |copy|
|
|
25
22
|
each_pair do |key, value|
|
|
@@ -39,8 +36,6 @@ module Mongoid
|
|
|
39
36
|
# responsible for serializing values. The keys of the hash must be
|
|
40
37
|
# strings that match the field name, and the values must respond to
|
|
41
38
|
# #localized? and #evolve(object).
|
|
42
|
-
#
|
|
43
|
-
# @since 1.0.0
|
|
44
39
|
def initialize(aliases = {}, serializers = {})
|
|
45
40
|
@aliases, @serializers = aliases, serializers
|
|
46
41
|
yield(self) if block_given?
|
|
@@ -54,8 +49,6 @@ module Mongoid
|
|
|
54
49
|
# @param [ String ] key The key.
|
|
55
50
|
#
|
|
56
51
|
# @return [ Object ] The found object.
|
|
57
|
-
#
|
|
58
|
-
# @since 2.0.0
|
|
59
52
|
def [](key)
|
|
60
53
|
fetch(aliases[key]) { super }
|
|
61
54
|
end
|
|
@@ -75,8 +68,6 @@ module Mongoid
|
|
|
75
68
|
# @param [ Object ] serializer The optional field serializer.
|
|
76
69
|
#
|
|
77
70
|
# @return [ String ] The normalized key.
|
|
78
|
-
#
|
|
79
|
-
# @since 1.0.0
|
|
80
71
|
def localized_key(name, serializer)
|
|
81
72
|
serializer && serializer.localized? ? "#{name}.#{::I18n.locale}" : name
|
|
82
73
|
end
|
|
@@ -93,8 +84,6 @@ module Mongoid
|
|
|
93
84
|
#
|
|
94
85
|
# @return [ Array<String, Object> ] The name of the db field and
|
|
95
86
|
# serializer.
|
|
96
|
-
#
|
|
97
|
-
# @since 1.0.0
|
|
98
87
|
def storage_pair(key)
|
|
99
88
|
field = key.to_s
|
|
100
89
|
name = aliases[field] || field
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
class Criteria
|
|
@@ -38,7 +37,7 @@ module Mongoid
|
|
|
38
37
|
raise ArgumentError, "Field must be a string: #{field}"
|
|
39
38
|
end
|
|
40
39
|
|
|
41
|
-
if field
|
|
40
|
+
if field.start_with?('$')
|
|
42
41
|
raise ArgumentError, "Field cannot be an operator (i.e. begin with $): #{field}"
|
|
43
42
|
end
|
|
44
43
|
|
|
@@ -48,14 +47,14 @@ module Mongoid
|
|
|
48
47
|
if value.is_a?(Hash) && selector[field].is_a?(Hash) &&
|
|
49
48
|
value.keys.all? { |key|
|
|
50
49
|
key_s = key.to_s
|
|
51
|
-
key_s
|
|
50
|
+
key_s.start_with?('$') && !selector[field].key?(key_s)
|
|
52
51
|
}
|
|
53
52
|
then
|
|
54
53
|
# Multiple operators can be combined on the same field by
|
|
55
54
|
# adding them to the existing hash.
|
|
56
55
|
new_value = selector[field].merge(value)
|
|
57
56
|
selector.store(field, new_value)
|
|
58
|
-
|
|
57
|
+
elsif selector[field] != value
|
|
59
58
|
add_operator_expression('$and', [{field => value}])
|
|
60
59
|
end
|
|
61
60
|
else
|
|
@@ -124,7 +123,12 @@ module Mongoid
|
|
|
124
123
|
elsif operator == '$and' || selector.empty?
|
|
125
124
|
# $and can always be added to top level and it will be combined
|
|
126
125
|
# with whatever other conditions exist.
|
|
127
|
-
selector
|
|
126
|
+
if !Mongoid.broken_and && current_value = selector[operator]
|
|
127
|
+
new_value = current_value + op_expr
|
|
128
|
+
selector.store(operator, new_value)
|
|
129
|
+
else
|
|
130
|
+
selector.store(operator, op_expr)
|
|
131
|
+
end
|
|
128
132
|
else
|
|
129
133
|
# Other operators need to be added separately
|
|
130
134
|
if selector[operator]
|
|
@@ -185,7 +189,7 @@ module Mongoid
|
|
|
185
189
|
raise ArgumentError, "Operator must be a string: #{operator}"
|
|
186
190
|
end
|
|
187
191
|
|
|
188
|
-
unless operator
|
|
192
|
+
unless operator.start_with?('$')
|
|
189
193
|
raise ArgumentError, "Operator must begin with $: #{operator}"
|
|
190
194
|
end
|
|
191
195
|
|
|
@@ -220,7 +224,7 @@ module Mongoid
|
|
|
220
224
|
raise ArgumentError, "Field must be a string: #{field}"
|
|
221
225
|
end
|
|
222
226
|
|
|
223
|
-
if field
|
|
227
|
+
if field.start_with?('$')
|
|
224
228
|
add_operator_expression(field, value)
|
|
225
229
|
else
|
|
226
230
|
add_field_expression(field, value)
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
require "mongoid/criteria/queryable/expandable"
|
|
5
4
|
require "mongoid/criteria/queryable/extensions"
|
|
@@ -47,8 +46,6 @@ module Mongoid
|
|
|
47
46
|
# @param [ Object ] other The object to compare against.
|
|
48
47
|
#
|
|
49
48
|
# @return [ true, false ] If the objects are equal.
|
|
50
|
-
#
|
|
51
|
-
# @since 1.0.0
|
|
52
49
|
def ==(other)
|
|
53
50
|
return false unless other.is_a?(Queryable)
|
|
54
51
|
selector == other.selector && options == other.options
|
|
@@ -63,8 +60,6 @@ module Mongoid
|
|
|
63
60
|
# @param [ Hash ] aliases The optional field aliases.
|
|
64
61
|
# @param [ Hash ] serializers The optional field serializers.
|
|
65
62
|
# @param [ Symbol ] driver The driver being used.
|
|
66
|
-
#
|
|
67
|
-
# @since 1.0.0
|
|
68
63
|
def initialize(aliases = {}, serializers = {}, driver = :mongo)
|
|
69
64
|
@aliases, @driver, @serializers = aliases, driver.to_sym, serializers
|
|
70
65
|
@options = Options.new(aliases, serializers)
|
|
@@ -80,8 +75,6 @@ module Mongoid
|
|
|
80
75
|
# queryable.initialize_copy(criteria)
|
|
81
76
|
#
|
|
82
77
|
# @param [ Queryable ] other The original copy.
|
|
83
|
-
#
|
|
84
|
-
# @since 1.0.0
|
|
85
78
|
def initialize_copy(other)
|
|
86
79
|
@options = other.options.__deep_copy__
|
|
87
80
|
@selector = other.selector.__deep_copy__
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
class Criteria
|
|
@@ -11,8 +10,6 @@ module Mongoid
|
|
|
11
10
|
# criteria.apply_default_scope
|
|
12
11
|
#
|
|
13
12
|
# @return [ Criteria ] The criteria.
|
|
14
|
-
#
|
|
15
|
-
# @since 3.0.0
|
|
16
13
|
def apply_default_scope
|
|
17
14
|
klass.without_default_scope do
|
|
18
15
|
merge!(klass.default_scoping.call)
|
|
@@ -20,6 +17,31 @@ module Mongoid
|
|
|
20
17
|
self.scoping_options = true, false
|
|
21
18
|
end
|
|
22
19
|
|
|
20
|
+
# Applies a scope to the current criteria.
|
|
21
|
+
#
|
|
22
|
+
# This method does not modify the receiver but it may return a new
|
|
23
|
+
# object or the receiver depending on the argument: if the +scope+
|
|
24
|
+
# argument is nil, the receiver is returned without modification,
|
|
25
|
+
# otherwise a new criteria object is returned.
|
|
26
|
+
#
|
|
27
|
+
# @param [ Proc | Symbol | Criteria | nil ] scope The scope to apply.
|
|
28
|
+
#
|
|
29
|
+
# @return [ Criteria ] The criteria with the scope applied.
|
|
30
|
+
#
|
|
31
|
+
# @api private
|
|
32
|
+
def apply_scope(scope)
|
|
33
|
+
case scope
|
|
34
|
+
when Proc
|
|
35
|
+
instance_exec(&scope)
|
|
36
|
+
when Symbol
|
|
37
|
+
send(scope)
|
|
38
|
+
when Criteria
|
|
39
|
+
merge(scope)
|
|
40
|
+
else
|
|
41
|
+
self
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
23
45
|
# Given another criteria, remove the other criteria's scoping from this
|
|
24
46
|
# criteria.
|
|
25
47
|
#
|
|
@@ -29,8 +51,6 @@ module Mongoid
|
|
|
29
51
|
# @param [ Criteria ] other The other criteria.
|
|
30
52
|
#
|
|
31
53
|
# @return [ Criteria ] The criteria with scoping removed.
|
|
32
|
-
#
|
|
33
|
-
# @since 3.0.0
|
|
34
54
|
def remove_scoping(other)
|
|
35
55
|
if other
|
|
36
56
|
reject_matching(other, :selector, :options)
|
|
@@ -49,8 +69,6 @@ module Mongoid
|
|
|
49
69
|
# @param [ Hash ] options Additional query options.
|
|
50
70
|
#
|
|
51
71
|
# @return [ Criteria ] The scoped criteria.
|
|
52
|
-
#
|
|
53
|
-
# @since 3.0.0
|
|
54
72
|
def scoped(options = nil)
|
|
55
73
|
crit = clone
|
|
56
74
|
crit.options.merge!(options || {})
|
|
@@ -66,8 +84,6 @@ module Mongoid
|
|
|
66
84
|
# criteria.scoped?
|
|
67
85
|
#
|
|
68
86
|
# @return [ true, false ] If the default scope is applied.
|
|
69
|
-
#
|
|
70
|
-
# @since 3.0.0
|
|
71
87
|
def scoped?
|
|
72
88
|
!!(defined?(@scoped) ? @scoped : nil)
|
|
73
89
|
end
|
|
@@ -78,8 +94,6 @@ module Mongoid
|
|
|
78
94
|
# criteria.unscoped
|
|
79
95
|
#
|
|
80
96
|
# @return [ Criteria ] The unscoped criteria.
|
|
81
|
-
#
|
|
82
|
-
# @since 3.0.0
|
|
83
97
|
def unscoped
|
|
84
98
|
crit = clone
|
|
85
99
|
unless unscoped?
|
|
@@ -95,8 +109,6 @@ module Mongoid
|
|
|
95
109
|
# criteria.unscoped?
|
|
96
110
|
#
|
|
97
111
|
# @return [ true, false ] If the criteria is force unscoped.
|
|
98
|
-
#
|
|
99
|
-
# @since 3.0.0
|
|
100
112
|
def unscoped?
|
|
101
113
|
!!(defined?(@unscoped) ? @unscoped : nil)
|
|
102
114
|
end
|
|
@@ -107,8 +119,6 @@ module Mongoid
|
|
|
107
119
|
# criteria.scoping_options
|
|
108
120
|
#
|
|
109
121
|
# @return [ Array ] Scoped, unscoped.
|
|
110
|
-
#
|
|
111
|
-
# @since 3.0.0
|
|
112
122
|
def scoping_options
|
|
113
123
|
[ (defined?(@scoped) ? @scoped : nil), (defined?(@unscoped) ? @unscoped : nil) ]
|
|
114
124
|
end
|
|
@@ -121,8 +131,6 @@ module Mongoid
|
|
|
121
131
|
# @param [ Array ] options Scoped, unscoped.
|
|
122
132
|
#
|
|
123
133
|
# @return [ Array ] The new scoping options.
|
|
124
|
-
#
|
|
125
|
-
# @since 3.0.0
|
|
126
134
|
def scoping_options=(options)
|
|
127
135
|
@scoped, @unscoped = options
|
|
128
136
|
end
|
|
@@ -136,8 +144,6 @@ module Mongoid
|
|
|
136
144
|
# criteria.with_default_scope
|
|
137
145
|
#
|
|
138
146
|
# @return [ Criteria ] The criteria.
|
|
139
|
-
#
|
|
140
|
-
# @since 3.0.0
|
|
141
147
|
def with_default_scope
|
|
142
148
|
crit = clone
|
|
143
149
|
if klass.default_scopable? && !unscoped? && !scoped?
|