mongoid 7.3.5 → 7.5.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 +3 -3
- data/lib/config/locales/en.yml +28 -20
- 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 +12 -59
- 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 +26 -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 +20 -64
- data/lib/mongoid/association/referenced/has_many/proxy.rb +20 -63
- 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 +0 -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 -24
- 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 +1 -42
- 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 +21 -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 +43 -30
- 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 +0 -25
- 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 +147 -70
- data/lib/mongoid/contextual/mongo.rb +249 -103
- data/lib/mongoid/contextual/none.rb +83 -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 +2 -25
- 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 +1 -24
- 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 +22 -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 +45 -76
- 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 +6 -2
- data/lib/mongoid/criteria/queryable.rb +0 -7
- data/lib/mongoid/criteria/scopable.rb +25 -19
- data/lib/mongoid/criteria.rb +2 -57
- data/lib/mongoid/document.rb +1 -50
- 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 +23 -15
- data/lib/mongoid/errors/eager_load.rb +0 -3
- data/lib/mongoid/errors/empty_config_file.rb +0 -1
- 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 +0 -1
- 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 +0 -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 +191 -60
- data/lib/mongoid/findable.rb +20 -10
- 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 +0 -27
- data/lib/mongoid/positional.rb +0 -5
- data/lib/mongoid/query_cache.rb +0 -33
- 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 +0 -5
- 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 +0 -7
- data/lib/mongoid/traversable.rb +67 -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/warnings.rb +29 -0
- data/lib/mongoid.rb +1 -15
- data/lib/rails/generators/mongoid/config/config_generator.rb +0 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +4 -3
- 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/config/mongoid_with_schema_map_uuid.yml +27 -0
- data/spec/integration/app_spec.rb +20 -15
- data/spec/integration/associations/belongs_to_spec.rb +0 -1
- data/spec/integration/associations/embedded_dirty_spec.rb +57 -0
- data/spec/integration/associations/embedded_spec.rb +0 -1
- data/spec/integration/associations/embeds_many_spec.rb +0 -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 +0 -1
- 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 +15 -2
- 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 +14 -1
- data/spec/lite_spec_helper.rb +1 -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 -156
- data/spec/mongoid/association/embedded/embeds_many_models.rb +0 -122
- 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 +0 -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 -162
- 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 +113 -33
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +225 -178
- data/spec/mongoid/association/referenced/has_many_models.rb +18 -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 +28 -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 +11 -13
- data/spec/mongoid/clients/options_spec.rb +5 -5
- 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 +39 -2
- data/spec/mongoid/config/options_spec.rb +0 -1
- data/spec/mongoid/config_spec.rb +154 -4
- 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 +46 -47
- data/spec/mongoid/contextual/geo_near_spec.rb +17 -18
- data/spec/mongoid/contextual/map_reduce_spec.rb +2 -3
- data/spec/mongoid/contextual/memory_spec.rb +849 -89
- data/spec/mongoid/contextual/mongo_spec.rb +1185 -160
- data/spec/mongoid/contextual/none_spec.rb +43 -72
- data/spec/mongoid/copyable_spec.rb +12 -13
- 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 +227 -55
- 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 +523 -187
- 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 +11 -33
- 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 +49 -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 +0 -1
- 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 +1 -2
- 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 +51 -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 +41 -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 +30 -8
- data/spec/mongoid/relations/proxy_spec.rb +6 -7
- data/spec/mongoid/reloadable_spec.rb +209 -23
- data/spec/mongoid/scopable_spec.rb +54 -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 +15 -20
- data/spec/mongoid/touchable_spec_models.rb +0 -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/constraints.rb +10 -17
- data/spec/shared/lib/mrss/docker_runner.rb +23 -3
- data/spec/shared/lib/mrss/eg_config_utils.rb +51 -0
- data/spec/shared/lib/mrss/event_subscriber.rb +15 -5
- data/spec/shared/lib/mrss/lite_constraints.rb +40 -1
- data/spec/shared/share/Dockerfile.erb +56 -54
- data/spec/shared/shlib/config.sh +27 -0
- data/spec/shared/shlib/distro.sh +2 -1
- data/spec/shared/shlib/server.sh +46 -21
- data/spec/shared/shlib/set_env.sh +43 -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 +31 -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/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 +2 -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 +1 -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/schema_maps/schema_map_aws.json +17 -0
- data/spec/support/schema_maps/schema_map_aws_key_alt_names.json +12 -0
- data/spec/support/schema_maps/schema_map_azure.json +17 -0
- data/spec/support/schema_maps/schema_map_azure_key_alt_names.json +12 -0
- data/spec/support/schema_maps/schema_map_gcp.json +17 -0
- data/spec/support/schema_maps/schema_map_gcp_key_alt_names.json +12 -0
- data/spec/support/schema_maps/schema_map_kmip.json +17 -0
- data/spec/support/schema_maps/schema_map_kmip_key_alt_names.json +12 -0
- data/spec/support/schema_maps/schema_map_local.json +18 -0
- data/spec/support/schema_maps/schema_map_local_key_alt_names.json +12 -0
- data/spec/support/shared/time.rb +0 -1
- data/spec/support/spec_config.rb +7 -1
- data.tar.gz.sig +0 -0
- metadata +51 -11
- metadata.gz.sig +0 -0
- data/lib/support/ruby_version.rb +0 -29
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Timestamps
|
|
@@ -15,8 +14,6 @@ module Mongoid
|
|
|
15
14
|
# document.clear_timeless_option
|
|
16
15
|
#
|
|
17
16
|
# @return [ true ] True.
|
|
18
|
-
#
|
|
19
|
-
# @since 3.1.4
|
|
20
17
|
def clear_timeless_option
|
|
21
18
|
if self.persisted?
|
|
22
19
|
self.class.clear_timeless_option_on_update
|
|
@@ -32,8 +29,6 @@ module Mongoid
|
|
|
32
29
|
# person.timeless.save
|
|
33
30
|
#
|
|
34
31
|
# @return [ Document ] The document this was called on.
|
|
35
|
-
#
|
|
36
|
-
# @since 2.3.0
|
|
37
32
|
def timeless
|
|
38
33
|
self.class.timeless
|
|
39
34
|
self
|
|
@@ -63,8 +58,6 @@ module Mongoid
|
|
|
63
58
|
# Person.timeless.create(:title => "Sir")
|
|
64
59
|
#
|
|
65
60
|
# @return [ Class ] The class this was called on.
|
|
66
|
-
#
|
|
67
|
-
# @since 2.3.0
|
|
68
61
|
def timeless
|
|
69
62
|
counter = 0
|
|
70
63
|
counter += 1 if self < Mongoid::Timestamps::Created
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
require "mongoid/timestamps/updated/short"
|
|
5
4
|
|
|
@@ -37,8 +36,6 @@ module Mongoid
|
|
|
37
36
|
# document.able_to_set_updated_at?
|
|
38
37
|
#
|
|
39
38
|
# @return [ true, false ] If the timestamp can be set.
|
|
40
|
-
#
|
|
41
|
-
# @since 2.4.0
|
|
42
39
|
def able_to_set_updated_at?
|
|
43
40
|
!frozen? && !timeless? && (new_record? || changed?)
|
|
44
41
|
end
|
data/lib/mongoid/timestamps.rb
CHANGED
data/lib/mongoid/touchable.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Touchable
|
|
@@ -21,8 +20,6 @@ module Mongoid
|
|
|
21
20
|
# @param [ Symbol ] field The name of an additional field to update.
|
|
22
21
|
#
|
|
23
22
|
# @return [ true/false ] false if record is new_record otherwise true.
|
|
24
|
-
#
|
|
25
|
-
# @since 3.0.0
|
|
26
23
|
def touch(field = nil)
|
|
27
24
|
return false if _root.new_record?
|
|
28
25
|
current = Time.now
|
|
@@ -80,8 +77,6 @@ module Mongoid
|
|
|
80
77
|
# @param [ Association ] association The association metadata.
|
|
81
78
|
#
|
|
82
79
|
# @return [ Class ] The model class.
|
|
83
|
-
#
|
|
84
|
-
# @since 3.0.0
|
|
85
80
|
def define_touchable!(association)
|
|
86
81
|
name = association.name
|
|
87
82
|
method_name = define_relation_touch_method(name, association)
|
|
@@ -106,8 +101,6 @@ module Mongoid
|
|
|
106
101
|
# @param [ Symbol ] name The name of the association.
|
|
107
102
|
# @param [ Association ] association The association metadata.
|
|
108
103
|
#
|
|
109
|
-
# @since 3.1.0
|
|
110
|
-
#
|
|
111
104
|
# @return [ Symbol ] The method name.
|
|
112
105
|
def define_relation_touch_method(name, association)
|
|
113
106
|
relation_classes = if association.polymorphic?
|
data/lib/mongoid/traversable.rb
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
require "mongoid/fields/validators/macro"
|
|
5
4
|
|
|
6
5
|
module Mongoid
|
|
7
6
|
|
|
8
7
|
# Provides behavior around traversing the document graph.
|
|
9
|
-
#
|
|
10
|
-
# @since 4.0.0
|
|
11
8
|
module Traversable
|
|
12
9
|
extend ActiveSupport::Concern
|
|
13
10
|
|
|
@@ -66,7 +63,7 @@ module Mongoid
|
|
|
66
63
|
# A separate module was needed because the subclasses of this class
|
|
67
64
|
# need to be manually prepended with the discriminator_value and can't
|
|
68
65
|
# rely on being a class_attribute because the .discriminator_value
|
|
69
|
-
# method is
|
|
66
|
+
# method is overridden by every subclass in the inherited method.
|
|
70
67
|
#
|
|
71
68
|
# @api private
|
|
72
69
|
module DiscriminatorRetrieval
|
|
@@ -118,53 +115,85 @@ module Mongoid
|
|
|
118
115
|
end
|
|
119
116
|
end
|
|
120
117
|
|
|
121
|
-
# Get all child +Documents+ to this +Document
|
|
122
|
-
#
|
|
118
|
+
# Get all child +Documents+ to this +Document+
|
|
119
|
+
#
|
|
120
|
+
# @return [ Array<Document> ] All child documents in the hierarchy.
|
|
121
|
+
#
|
|
122
|
+
# @api private
|
|
123
|
+
def _children
|
|
124
|
+
@__children ||= collect_children
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# Get all descendant +Documents+ of this +Document+ recursively.
|
|
128
|
+
# This is used when calling update persistence operations from
|
|
123
129
|
# the root document, where changes in the entire tree need to be
|
|
124
130
|
# determined. Note that persistence from the embedded documents will
|
|
125
131
|
# always be preferred, since they are optimized calls... This operation
|
|
126
132
|
# can get expensive in domains with large hierarchies.
|
|
127
133
|
#
|
|
128
|
-
# @
|
|
129
|
-
# person._children
|
|
134
|
+
# @return [ Array<Document> ] All descendant documents in the hierarchy.
|
|
130
135
|
#
|
|
131
|
-
# @
|
|
132
|
-
def
|
|
133
|
-
@
|
|
136
|
+
# @api private
|
|
137
|
+
def _descendants
|
|
138
|
+
@__descendants ||= collect_descendants
|
|
134
139
|
end
|
|
135
140
|
|
|
136
141
|
# Collect all the children of this document.
|
|
137
142
|
#
|
|
138
|
-
# @example Collect all the children.
|
|
139
|
-
# document.collect_children
|
|
140
|
-
#
|
|
141
143
|
# @return [ Array<Document> ] The children.
|
|
142
144
|
#
|
|
143
|
-
# @
|
|
145
|
+
# @api private
|
|
144
146
|
def collect_children
|
|
145
147
|
children = []
|
|
146
148
|
embedded_relations.each_pair do |name, association|
|
|
147
149
|
without_autobuild do
|
|
148
150
|
child = send(name)
|
|
149
|
-
|
|
150
|
-
children.
|
|
151
|
-
|
|
152
|
-
end if child
|
|
151
|
+
if child
|
|
152
|
+
children += Array.wrap(child)
|
|
153
|
+
end
|
|
153
154
|
end
|
|
154
155
|
end
|
|
155
156
|
children
|
|
156
157
|
end
|
|
157
158
|
|
|
158
|
-
#
|
|
159
|
+
# Collect all the descendants of this document.
|
|
159
160
|
#
|
|
160
|
-
# @
|
|
161
|
-
# document.flag_children_persisted
|
|
161
|
+
# @return [ Array<Document> ] The descendants.
|
|
162
162
|
#
|
|
163
|
-
# @
|
|
163
|
+
# @api private
|
|
164
|
+
def collect_descendants
|
|
165
|
+
children = []
|
|
166
|
+
to_expand = []
|
|
167
|
+
expanded = {}
|
|
168
|
+
embedded_relations.each_pair do |name, association|
|
|
169
|
+
without_autobuild do
|
|
170
|
+
child = send(name)
|
|
171
|
+
if child
|
|
172
|
+
to_expand += Array.wrap(child)
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
until to_expand.empty?
|
|
177
|
+
expanding = to_expand
|
|
178
|
+
to_expand = []
|
|
179
|
+
expanding.each do |child|
|
|
180
|
+
next if expanded[child]
|
|
181
|
+
# Don't mark expanded if _id is nil, since documents are compared by
|
|
182
|
+
# their _ids, multiple embedded documents with nil ids will compare
|
|
183
|
+
# equally, and some documents will not be expanded.
|
|
184
|
+
expanded[child] = true if child._id
|
|
185
|
+
children << child
|
|
186
|
+
to_expand += child._children
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
children
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
# Marks all descendants as being persisted.
|
|
164
193
|
#
|
|
165
|
-
# @
|
|
166
|
-
def
|
|
167
|
-
|
|
194
|
+
# @return [ Array<Document> ] The flagged descendants.
|
|
195
|
+
def flag_descendants_persisted
|
|
196
|
+
_descendants.each do |child|
|
|
168
197
|
child.new_record = false
|
|
169
198
|
end
|
|
170
199
|
end
|
|
@@ -201,8 +230,6 @@ module Mongoid
|
|
|
201
230
|
# document.remove_child(child)
|
|
202
231
|
#
|
|
203
232
|
# @param [ Document ] child The child (embedded) document to remove.
|
|
204
|
-
#
|
|
205
|
-
# @since 2.0.0.beta.1
|
|
206
233
|
def remove_child(child)
|
|
207
234
|
name = child.association_name
|
|
208
235
|
if child.embedded_one?
|
|
@@ -213,37 +240,28 @@ module Mongoid
|
|
|
213
240
|
end
|
|
214
241
|
end
|
|
215
242
|
|
|
216
|
-
# After
|
|
217
|
-
# and flag them as persisted in one call.
|
|
218
|
-
#
|
|
219
|
-
# @example Reset the children.
|
|
220
|
-
# document.reset_persisted_children
|
|
243
|
+
# After descendants are persisted we can call this to move all their
|
|
244
|
+
# changes and flag them as persisted in one call.
|
|
221
245
|
#
|
|
222
|
-
# @return [ Array<Document> ] The
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
def reset_persisted_children
|
|
226
|
-
_children.each do |child|
|
|
246
|
+
# @return [ Array<Document> ] The descendants.
|
|
247
|
+
def reset_persisted_descendants
|
|
248
|
+
_descendants.each do |child|
|
|
227
249
|
child.move_changes
|
|
228
250
|
child.new_record = false
|
|
229
251
|
end
|
|
230
|
-
|
|
252
|
+
_reset_memoized_descendants!
|
|
231
253
|
end
|
|
232
254
|
|
|
233
|
-
# Resets the memoized
|
|
255
|
+
# Resets the memoized descendants on the object. Called internally when an
|
|
234
256
|
# embedded array changes size.
|
|
235
257
|
#
|
|
236
|
-
# @api semiprivate
|
|
237
|
-
#
|
|
238
|
-
# @example Reset the memoized children.
|
|
239
|
-
# document._reset_memoized_children!
|
|
240
|
-
#
|
|
241
258
|
# @return [ nil ] nil.
|
|
242
259
|
#
|
|
243
|
-
# @
|
|
244
|
-
def
|
|
245
|
-
_parent.
|
|
260
|
+
# @api private
|
|
261
|
+
def _reset_memoized_descendants!
|
|
262
|
+
_parent._reset_memoized_descendants! if _parent
|
|
246
263
|
@__children = nil
|
|
264
|
+
@__descendants = nil
|
|
247
265
|
end
|
|
248
266
|
|
|
249
267
|
# Return the root document in the object graph. If the current document
|
|
@@ -265,8 +283,6 @@ module Mongoid
|
|
|
265
283
|
# document._root?
|
|
266
284
|
#
|
|
267
285
|
# @return [ true, false ] If the document is the root.
|
|
268
|
-
#
|
|
269
|
-
# @since 3.1.0
|
|
270
286
|
def _root?
|
|
271
287
|
_parent ? false : true
|
|
272
288
|
end
|
|
@@ -291,8 +307,6 @@ module Mongoid
|
|
|
291
307
|
# Person.inherited(Doctor)
|
|
292
308
|
#
|
|
293
309
|
# @param [ Class ] subclass The inheriting class.
|
|
294
|
-
#
|
|
295
|
-
# @since 2.0.0.rc.6
|
|
296
310
|
def inherited(subclass)
|
|
297
311
|
super
|
|
298
312
|
@_type = nil
|
|
@@ -305,7 +319,7 @@ module Mongoid
|
|
|
305
319
|
subclass.discriminator_value = subclass.name
|
|
306
320
|
|
|
307
321
|
# We need to do this here because the discriminator_value method is
|
|
308
|
-
#
|
|
322
|
+
# overridden in the subclass above.
|
|
309
323
|
class << subclass
|
|
310
324
|
include DiscriminatorRetrieval
|
|
311
325
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Validatable
|
|
@@ -28,8 +27,6 @@ module Mongoid
|
|
|
28
27
|
# @param [ Document ] document The document to validate.
|
|
29
28
|
# @param [ Symbol ] attribute The association to validate.
|
|
30
29
|
# @param [ Object ] value The value of the association.
|
|
31
|
-
#
|
|
32
|
-
# @since 2.0.0
|
|
33
30
|
def validate_each(document, attribute, value)
|
|
34
31
|
begin
|
|
35
32
|
document.begin_validate
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Validatable
|
|
@@ -15,8 +14,6 @@ module Mongoid
|
|
|
15
14
|
# @param [ Document ] document The document.
|
|
16
15
|
# @param [ Symbol, String ] attribute The attribute to validate.
|
|
17
16
|
# @param [ Object ] value The attribute value.
|
|
18
|
-
#
|
|
19
|
-
# @since 2.4.2
|
|
20
17
|
def validate_each(document, attribute, value)
|
|
21
18
|
field = document.fields[document.database_field_name(attribute)]
|
|
22
19
|
if field.try(:localized?) && !value.blank?
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Validatable
|
|
@@ -54,8 +53,6 @@ module Mongoid
|
|
|
54
53
|
# end
|
|
55
54
|
#
|
|
56
55
|
# @param [ Array ] args The names of the fields to validate.
|
|
57
|
-
#
|
|
58
|
-
# @since 2.4.0
|
|
59
56
|
def validates_format_of(*args)
|
|
60
57
|
validates_with(FormatValidator, _merge_attributes(args))
|
|
61
58
|
end
|
|
@@ -71,8 +68,6 @@ module Mongoid
|
|
|
71
68
|
# end
|
|
72
69
|
#
|
|
73
70
|
# @param [ Array ] args The names of the fields to validate.
|
|
74
|
-
#
|
|
75
|
-
# @since 2.4.0
|
|
76
71
|
def validates_length_of(*args)
|
|
77
72
|
validates_with(LengthValidator, _merge_attributes(args))
|
|
78
73
|
end
|
|
@@ -88,8 +83,6 @@ module Mongoid
|
|
|
88
83
|
# end
|
|
89
84
|
#
|
|
90
85
|
# @param [ Array ] args The names of the fields to validate.
|
|
91
|
-
#
|
|
92
|
-
# @since 2.4.0
|
|
93
86
|
def validates_presence_of(*args)
|
|
94
87
|
validates_with(PresenceValidator, _merge_attributes(args))
|
|
95
88
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Validatable
|
|
@@ -25,8 +24,6 @@ module Mongoid
|
|
|
25
24
|
# @param [ Document ] document The document to validate.
|
|
26
25
|
# @param [ Symbol ] attribute The attribute name.
|
|
27
26
|
# @param [ Object ] value The current value of the field.
|
|
28
|
-
#
|
|
29
|
-
# @since 2.4.0
|
|
30
27
|
def validate_each(document, attribute, value)
|
|
31
28
|
field = document.fields[document.database_field_name(attribute)]
|
|
32
29
|
if field.try(:localized?) && !value.blank?
|
|
@@ -53,15 +50,13 @@ module Mongoid
|
|
|
53
50
|
# @api private
|
|
54
51
|
#
|
|
55
52
|
# @example Check is the association or fk is blank.
|
|
56
|
-
# validator.
|
|
53
|
+
# validator.relation_or_fk_missing(doc, :name, "")
|
|
57
54
|
#
|
|
58
55
|
# @param [ Document ] doc The document.
|
|
59
56
|
# @param [ Symbol ] attr The attribute.
|
|
60
57
|
# @param [ Object ] value The value.
|
|
61
58
|
#
|
|
62
59
|
# @return [ true, false ] If the doc is missing.
|
|
63
|
-
#
|
|
64
|
-
# @since 3.0.0
|
|
65
60
|
def relation_or_fk_missing?(doc, attr, value)
|
|
66
61
|
return true if value.blank? && doc.send(attr).blank?
|
|
67
62
|
association = doc.relations[attr.to_s]
|
|
@@ -78,8 +73,6 @@ module Mongoid
|
|
|
78
73
|
# @param [ Object ] value The value.
|
|
79
74
|
#
|
|
80
75
|
# @return [ true, false ] If the value is not present.
|
|
81
|
-
#
|
|
82
|
-
# @since 3.0.5
|
|
83
76
|
def not_present?(value)
|
|
84
77
|
value.blank? && value != false
|
|
85
78
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Validatable
|
|
@@ -16,8 +15,6 @@ module Mongoid
|
|
|
16
15
|
# @param [ Document ] document The document being validated.
|
|
17
16
|
#
|
|
18
17
|
# @return [ Object ] The result of the yield.
|
|
19
|
-
#
|
|
20
|
-
# @since 3.0.2
|
|
21
18
|
def with_query(document)
|
|
22
19
|
klass = document.class
|
|
23
20
|
begin
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Validatable
|
|
@@ -38,8 +37,6 @@ module Mongoid
|
|
|
38
37
|
# @param [ Object ] value The value of the field.
|
|
39
38
|
#
|
|
40
39
|
# @return [ Errors ] The errors.
|
|
41
|
-
#
|
|
42
|
-
# @since 1.0.0
|
|
43
40
|
def validate_each(document, attribute, value)
|
|
44
41
|
with_query(document) do
|
|
45
42
|
attrib, val = to_validate(document, attribute, value)
|
|
@@ -64,8 +61,6 @@ module Mongoid
|
|
|
64
61
|
# @param [ Document ] document The document to validate.
|
|
65
62
|
# @param [ Symbol ] attribute The name of the attribute.
|
|
66
63
|
# @param [ Object ] value The value of the object.
|
|
67
|
-
#
|
|
68
|
-
# @since 2.4.10
|
|
69
64
|
def add_error(document, attribute, value)
|
|
70
65
|
document.errors.add(
|
|
71
66
|
attribute, :taken, **options.except(:case_sensitive, :scope).merge(value: value)
|
|
@@ -80,8 +75,6 @@ module Mongoid
|
|
|
80
75
|
# validator.case_sensitive?
|
|
81
76
|
#
|
|
82
77
|
# @return [ true, false ] If the validation is case sensitive.
|
|
83
|
-
#
|
|
84
|
-
# @since 2.3.0
|
|
85
78
|
def case_sensitive?
|
|
86
79
|
!(options[:case_sensitive] == false)
|
|
87
80
|
end
|
|
@@ -99,11 +92,23 @@ module Mongoid
|
|
|
99
92
|
# @param [ Object ] value The value of the object.
|
|
100
93
|
#
|
|
101
94
|
# @return [ Criteria ] The criteria.
|
|
102
|
-
#
|
|
103
|
-
# @since 2.4.10
|
|
104
95
|
def create_criteria(base, document, attribute, value)
|
|
105
96
|
criteria = scope(base.unscoped, document, attribute)
|
|
106
|
-
|
|
97
|
+
field = document.fields[document.database_field_name(attribute)]
|
|
98
|
+
|
|
99
|
+
# In the past, we were calling value.mongoize in all cases, which
|
|
100
|
+
# would call Object's mongoize method. This is a problem for StringifiedSymbol,
|
|
101
|
+
# because a Symbol should mongoize to a String, but calling .mongoize
|
|
102
|
+
# on a Symbol mongoizes it to a Symbol.
|
|
103
|
+
# Therefore, we call the field's mongoize in all cases except when the
|
|
104
|
+
# field is localized, because by the time we arrive at this code, the
|
|
105
|
+
# value is already in the form of { lang => translation } and calling
|
|
106
|
+
# the field's mongoize will nest that further into { lang =>
|
|
107
|
+
# "\{ lang => translation \}"} (assuming the field type is a string).
|
|
108
|
+
# Therefore, we call Object's mongoize method so it returns the hash as
|
|
109
|
+
# it is.
|
|
110
|
+
mongoized = field.try(:localized?) ? value.mongoize : field.mongoize(value)
|
|
111
|
+
criteria.selector.update(criterion(document, attribute, mongoized))
|
|
107
112
|
criteria
|
|
108
113
|
end
|
|
109
114
|
|
|
@@ -119,8 +124,6 @@ module Mongoid
|
|
|
119
124
|
# @param [ Object ] value The value of the object.
|
|
120
125
|
#
|
|
121
126
|
# @return [ Criteria ] The uniqueness criteria.
|
|
122
|
-
#
|
|
123
|
-
# @since 2.3.0
|
|
124
127
|
def criterion(document, attribute, value)
|
|
125
128
|
field = document.database_field_name(attribute)
|
|
126
129
|
|
|
@@ -147,8 +150,6 @@ module Mongoid
|
|
|
147
150
|
# @param [ Object ] value The value to filter.
|
|
148
151
|
#
|
|
149
152
|
# @return [ Object, Regexp ] The value, filtered or not.
|
|
150
|
-
#
|
|
151
|
-
# @since 2.3.0
|
|
152
153
|
def filter(value)
|
|
153
154
|
!case_sensitive? && value ? /\A#{Regexp.escape(value.to_s)}\z/i : value
|
|
154
155
|
end
|
|
@@ -164,8 +165,6 @@ module Mongoid
|
|
|
164
165
|
# @param [ Document ] document The document being validated.
|
|
165
166
|
#
|
|
166
167
|
# @return [ Criteria ] The scoped criteria.
|
|
167
|
-
#
|
|
168
|
-
# @since 2.3.0
|
|
169
168
|
def scope(criteria, document, _attribute)
|
|
170
169
|
Array.wrap(options[:scope]).each do |item|
|
|
171
170
|
name = document.database_field_name(item)
|
|
@@ -184,8 +183,6 @@ module Mongoid
|
|
|
184
183
|
# @param [ Document ] document The embedded document.
|
|
185
184
|
#
|
|
186
185
|
# @return [ true, false ] If the validation should be skipped.
|
|
187
|
-
#
|
|
188
|
-
# @since 2.3.0
|
|
189
186
|
def skip_validation?(document)
|
|
190
187
|
!document._parent || document.embedded_one?
|
|
191
188
|
end
|
|
@@ -200,8 +197,6 @@ module Mongoid
|
|
|
200
197
|
# @param [ Document ] document The embedded document.
|
|
201
198
|
#
|
|
202
199
|
# @return [ true, false ] If the scope reference has changed.
|
|
203
|
-
#
|
|
204
|
-
# @since
|
|
205
200
|
def scope_value_changed?(document)
|
|
206
201
|
Array.wrap(options[:scope]).any? do |item|
|
|
207
202
|
document.send("attribute_changed?", item.to_s)
|
|
@@ -223,8 +218,6 @@ module Mongoid
|
|
|
223
218
|
# @param [ Object ] value The value of the attribute.
|
|
224
219
|
#
|
|
225
220
|
# @return [ Array<Object, Object> ] The field and value.
|
|
226
|
-
#
|
|
227
|
-
# @since 2.4.4
|
|
228
221
|
def to_validate(document, attribute, value)
|
|
229
222
|
association = document.relations[attribute.to_s]
|
|
230
223
|
if association && association.stores_foreign_key?
|
|
@@ -244,8 +237,6 @@ module Mongoid
|
|
|
244
237
|
# @param [ Document ] document The document.
|
|
245
238
|
# @param [ Symbol ] attribute The attribute name.
|
|
246
239
|
# @param [ Object ] value The value.
|
|
247
|
-
#
|
|
248
|
-
# @since 2.4.10
|
|
249
240
|
def validate_embedded(document, attribute, value)
|
|
250
241
|
return if skip_validation?(document)
|
|
251
242
|
relation = document._parent.send(document.association_name)
|
|
@@ -264,8 +255,6 @@ module Mongoid
|
|
|
264
255
|
# @param [ Document ] document The document.
|
|
265
256
|
# @param [ Symbol ] attribute The attribute name.
|
|
266
257
|
# @param [ Object ] value The value.
|
|
267
|
-
#
|
|
268
|
-
# @since 2.4.10
|
|
269
258
|
def validate_root(document, attribute, value)
|
|
270
259
|
klass = document.class
|
|
271
260
|
|
|
@@ -289,8 +278,6 @@ module Mongoid
|
|
|
289
278
|
# @param [ Symbol ] attribute The attribute to validate.
|
|
290
279
|
#
|
|
291
280
|
# @return [ true, false ] If we need to validate.
|
|
292
|
-
#
|
|
293
|
-
# @since 2.4.4
|
|
294
281
|
def validation_required?(document, attribute)
|
|
295
282
|
document.new_record? ||
|
|
296
283
|
document.send("attribute_changed?", attribute.to_s) ||
|
|
@@ -308,8 +295,6 @@ module Mongoid
|
|
|
308
295
|
# @param [ Symbol ] attribute The attribute to validate.
|
|
309
296
|
#
|
|
310
297
|
# @return [ true, false ] If the attribute is localized.
|
|
311
|
-
#
|
|
312
|
-
# @since 4.0.0
|
|
313
298
|
def localized?(document, attribute)
|
|
314
299
|
document.fields[document.database_field_name(attribute)].try(:localized?)
|
|
315
300
|
end
|
data/lib/mongoid/validatable.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
require "mongoid/validatable/macros"
|
|
5
4
|
require "mongoid/validatable/localizable"
|
|
@@ -26,8 +25,6 @@ module Mongoid
|
|
|
26
25
|
#
|
|
27
26
|
# @example Begin validation.
|
|
28
27
|
# document.begin_validate
|
|
29
|
-
#
|
|
30
|
-
# @since 2.1.9
|
|
31
28
|
def begin_validate
|
|
32
29
|
Threaded.begin_validate(self)
|
|
33
30
|
end
|
|
@@ -36,8 +33,6 @@ module Mongoid
|
|
|
36
33
|
#
|
|
37
34
|
# @example Exit validation.
|
|
38
35
|
# document.exit_validate
|
|
39
|
-
#
|
|
40
|
-
# @since 2.1.9
|
|
41
36
|
def exit_validate
|
|
42
37
|
Threaded.exit_validate(self)
|
|
43
38
|
end
|
|
@@ -50,8 +45,6 @@ module Mongoid
|
|
|
50
45
|
# @param [ Hash ] options The options to check.
|
|
51
46
|
#
|
|
52
47
|
# @return [ true, false ] If we are validating.
|
|
53
|
-
#
|
|
54
|
-
# @since 4.0.0
|
|
55
48
|
def performing_validations?(options = {})
|
|
56
49
|
options[:validate].nil? ? true : options[:validate]
|
|
57
50
|
end
|
|
@@ -66,8 +59,6 @@ module Mongoid
|
|
|
66
59
|
# @param [ Symbol ] attr The name of the field or association.
|
|
67
60
|
#
|
|
68
61
|
# @return [ Object ] The value of the field or the association.
|
|
69
|
-
#
|
|
70
|
-
# @since 2.0.0.rc.1
|
|
71
62
|
def read_attribute_for_validation(attr)
|
|
72
63
|
attribute = database_field_name(attr)
|
|
73
64
|
if relations.key?(attribute)
|
|
@@ -93,8 +84,6 @@ module Mongoid
|
|
|
93
84
|
# @param [ Symbol ] context The optional validation context.
|
|
94
85
|
#
|
|
95
86
|
# @return [ true, false ] True if valid, false if not.
|
|
96
|
-
#
|
|
97
|
-
# @since 2.0.0.rc.6
|
|
98
87
|
def valid?(context = nil)
|
|
99
88
|
super context ? context : (new_record? ? :create : :update)
|
|
100
89
|
end
|
|
@@ -105,8 +94,6 @@ module Mongoid
|
|
|
105
94
|
# document.validated?
|
|
106
95
|
#
|
|
107
96
|
# @return [ true, false ] Has the document already been validated?
|
|
108
|
-
#
|
|
109
|
-
# @since 2.0.0.rc.2
|
|
110
97
|
def validated?
|
|
111
98
|
Threaded.validated?(self)
|
|
112
99
|
end
|
|
@@ -117,8 +104,6 @@ module Mongoid
|
|
|
117
104
|
# document.validating_with_query?
|
|
118
105
|
#
|
|
119
106
|
# @return [ true, false ] If we are validating with a query.
|
|
120
|
-
#
|
|
121
|
-
# @since 3.0.2
|
|
122
107
|
def validating_with_query?
|
|
123
108
|
self.class.validating_with_query?
|
|
124
109
|
end
|
|
@@ -132,15 +117,13 @@ module Mongoid
|
|
|
132
117
|
# Person.validates_relation(association)
|
|
133
118
|
#
|
|
134
119
|
# @param [ Association ] association The association metadata.
|
|
135
|
-
#
|
|
136
|
-
# @since 2.0.0.rc.1
|
|
137
120
|
def validates_relation(association)
|
|
138
121
|
if association.validate?
|
|
139
122
|
validates_associated(association.name)
|
|
140
123
|
end
|
|
141
124
|
end
|
|
142
125
|
|
|
143
|
-
# Add validation with the supplied validators
|
|
126
|
+
# Add validation with the supplied validators for the provided fields
|
|
144
127
|
# with options.
|
|
145
128
|
#
|
|
146
129
|
# @example Validate with a specific validator.
|
|
@@ -151,8 +134,6 @@ module Mongoid
|
|
|
151
134
|
# @note See ActiveModel::Validations::With for full options. This is
|
|
152
135
|
# overridden to add autosave functionality when presence validation is
|
|
153
136
|
# added.
|
|
154
|
-
#
|
|
155
|
-
# @since 3.0.0
|
|
156
137
|
def validates_with(*args, &block)
|
|
157
138
|
if args.first == PresenceValidator
|
|
158
139
|
args.last[:attributes].each do |name|
|
|
@@ -171,8 +152,6 @@ module Mongoid
|
|
|
171
152
|
# Model.validating_with_query?
|
|
172
153
|
#
|
|
173
154
|
# @return [ true, false ] If we are validating with a query.
|
|
174
|
-
#
|
|
175
|
-
# @since 3.0.2
|
|
176
155
|
def validating_with_query?
|
|
177
156
|
Threaded.executing?("#{name}-validate-with-query")
|
|
178
157
|
end
|