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
|
require 'mongoid/association/embedded/batchable'
|
|
5
4
|
|
|
@@ -39,8 +38,6 @@ module Mongoid
|
|
|
39
38
|
# person.addresses.as_document
|
|
40
39
|
#
|
|
41
40
|
# @return [ Array<Hash> ] The association as stored in the db.
|
|
42
|
-
#
|
|
43
|
-
# @since 2.0.0.rc.1
|
|
44
41
|
def as_document
|
|
45
42
|
as_attributes.collect { |attrs| BSON::Document.new(attrs) }
|
|
46
43
|
end
|
|
@@ -54,8 +51,6 @@ module Mongoid
|
|
|
54
51
|
# @param [ Array<Document> ] docs The docs to add.
|
|
55
52
|
#
|
|
56
53
|
# @return [ Array<Document> ] The documents.
|
|
57
|
-
#
|
|
58
|
-
# @since 2.4.0
|
|
59
54
|
def concat(docs)
|
|
60
55
|
batch_insert(docs) unless docs.empty?
|
|
61
56
|
self
|
|
@@ -77,7 +72,7 @@ module Mongoid
|
|
|
77
72
|
doc.apply_post_processed_defaults
|
|
78
73
|
yield(doc) if block_given?
|
|
79
74
|
doc.run_callbacks(:build) { doc }
|
|
80
|
-
_base.
|
|
75
|
+
_base._reset_memoized_descendants!
|
|
81
76
|
doc
|
|
82
77
|
end
|
|
83
78
|
|
|
@@ -107,12 +102,26 @@ module Mongoid
|
|
|
107
102
|
#
|
|
108
103
|
# Use #size if you want the total number of documents.
|
|
109
104
|
#
|
|
105
|
+
# If args or block are present, #count will delegate to the
|
|
106
|
+
# #count method on +target+ and will include both persisted
|
|
107
|
+
# and non-persisted documents.
|
|
108
|
+
#
|
|
110
109
|
# @example Get the count of persisted documents.
|
|
111
110
|
# person.addresses.count
|
|
112
111
|
#
|
|
112
|
+
# @example Get the count of all documents matching a block.
|
|
113
|
+
# person.addresses.count { |a| a.country == "FR" }
|
|
114
|
+
#
|
|
115
|
+
# @example Use #persisted? inside block to count persisted documents.
|
|
116
|
+
# person.addresses.count { |a| a.persisted? && a.country == "FR" }
|
|
117
|
+
#
|
|
118
|
+
# @param [ Object, Array<Object> ] args Args to delegate to the target.
|
|
119
|
+
#
|
|
113
120
|
# @return [ Integer ] The total number of persisted embedded docs, as
|
|
114
121
|
# flagged by the #persisted? method.
|
|
115
|
-
def count
|
|
122
|
+
def count(*args, &block)
|
|
123
|
+
return _target.count(*args, &block) if args.any? || block
|
|
124
|
+
|
|
116
125
|
_target.select { |doc| doc.persisted? }.size
|
|
117
126
|
end
|
|
118
127
|
|
|
@@ -125,8 +134,6 @@ module Mongoid
|
|
|
125
134
|
# @param [ Document ] document The document to be deleted.
|
|
126
135
|
#
|
|
127
136
|
# @return [ Document, nil ] The deleted document or nil if nothing deleted.
|
|
128
|
-
#
|
|
129
|
-
# @since 2.0.0.rc.1
|
|
130
137
|
def delete(document)
|
|
131
138
|
execute_callback :before_remove, document
|
|
132
139
|
doc = _target.delete_one(document)
|
|
@@ -168,8 +175,6 @@ module Mongoid
|
|
|
168
175
|
#
|
|
169
176
|
# @return [ Many, Enumerator ] The association or an enumerator if no
|
|
170
177
|
# block was provided.
|
|
171
|
-
#
|
|
172
|
-
# @since 3.1.0
|
|
173
178
|
def delete_if
|
|
174
179
|
if block_given?
|
|
175
180
|
dup_target = _target.dup
|
|
@@ -210,17 +215,29 @@ module Mongoid
|
|
|
210
215
|
# Finds a document in this association through several different
|
|
211
216
|
# methods.
|
|
212
217
|
#
|
|
218
|
+
# This method delegates to +Mongoid::Criteria#find+. If this method is
|
|
219
|
+
# not given a block, it returns one or many documents for the provided
|
|
220
|
+
# _id values.
|
|
221
|
+
#
|
|
222
|
+
# If this method is given a block, it returns the first document
|
|
223
|
+
# of those found by the current Criteria object for which the block
|
|
224
|
+
# returns a truthy value.
|
|
225
|
+
#
|
|
213
226
|
# @example Find a document by its id.
|
|
214
227
|
# person.addresses.find(BSON::ObjectId.new)
|
|
215
228
|
#
|
|
216
229
|
# @example Find documents for multiple ids.
|
|
217
230
|
# person.addresses.find([ BSON::ObjectId.new, BSON::ObjectId.new ])
|
|
218
231
|
#
|
|
232
|
+
# @example Finds the first matching document using a block.
|
|
233
|
+
# person.addresses.find { |addr| addr.state == 'CA' }
|
|
234
|
+
#
|
|
219
235
|
# @param [ Array<Object> ] args Various arguments.
|
|
236
|
+
# @param [ Proc ] block Optional block to pass.
|
|
220
237
|
#
|
|
221
|
-
# @return [ Array<Document
|
|
222
|
-
def find(*args)
|
|
223
|
-
criteria.find(*args)
|
|
238
|
+
# @return [ Document | Array<Document> | nil ] A document or matching documents.
|
|
239
|
+
def find(*args, &block)
|
|
240
|
+
criteria.find(*args, &block)
|
|
224
241
|
end
|
|
225
242
|
|
|
226
243
|
# Instantiate a new embeds_many association.
|
|
@@ -250,8 +267,6 @@ module Mongoid
|
|
|
250
267
|
# relation.in_memory
|
|
251
268
|
#
|
|
252
269
|
# @return [ Array<Document> ] The documents in memory.
|
|
253
|
-
#
|
|
254
|
-
# @since 2.1.0
|
|
255
270
|
def in_memory
|
|
256
271
|
_target
|
|
257
272
|
end
|
|
@@ -269,8 +284,6 @@ module Mongoid
|
|
|
269
284
|
# provided.
|
|
270
285
|
#
|
|
271
286
|
# @return [ Document, Array<Document> ] The popped document(s).
|
|
272
|
-
#
|
|
273
|
-
# @since 3.0.0
|
|
274
287
|
def pop(count = nil)
|
|
275
288
|
if count
|
|
276
289
|
if docs = _target[_target.size - count, _target.size]
|
|
@@ -313,8 +326,6 @@ module Mongoid
|
|
|
313
326
|
# @param [ Array<Document> ] docs The replacement docs.
|
|
314
327
|
#
|
|
315
328
|
# @return [ Many ] The proxied association.
|
|
316
|
-
#
|
|
317
|
-
# @since 2.0.0.rc.1
|
|
318
329
|
def substitute(docs)
|
|
319
330
|
batch_replace(docs)
|
|
320
331
|
self
|
|
@@ -327,8 +338,6 @@ module Mongoid
|
|
|
327
338
|
# person.addresses.unscoped
|
|
328
339
|
#
|
|
329
340
|
# @return [ Criteria ] The unscoped association.
|
|
330
|
-
#
|
|
331
|
-
# @since 2.4.0
|
|
332
341
|
def unscoped
|
|
333
342
|
criterion = klass.unscoped
|
|
334
343
|
criterion.embedded = true
|
|
@@ -349,8 +358,6 @@ module Mongoid
|
|
|
349
358
|
# relation.append(document)
|
|
350
359
|
#
|
|
351
360
|
# @param [ Document ] document The document to append to the target.
|
|
352
|
-
#
|
|
353
|
-
# @since 2.0.0.rc.1
|
|
354
361
|
def append(document)
|
|
355
362
|
execute_callback :before_add, document
|
|
356
363
|
unless object_already_related?(document)
|
|
@@ -368,8 +375,6 @@ module Mongoid
|
|
|
368
375
|
# relation.binding([ address ])
|
|
369
376
|
#
|
|
370
377
|
# @return [ Binding ] The many binding.
|
|
371
|
-
#
|
|
372
|
-
# @since 2.0.0.rc.1
|
|
373
378
|
def binding
|
|
374
379
|
Binding.new(_base, _target, _association)
|
|
375
380
|
end
|
|
@@ -390,8 +395,6 @@ module Mongoid
|
|
|
390
395
|
# relation.delete_one(doc)
|
|
391
396
|
#
|
|
392
397
|
# @param [ Document ] document The document to delete.
|
|
393
|
-
#
|
|
394
|
-
# @since 2.4.7
|
|
395
398
|
def delete_one(document)
|
|
396
399
|
_target.delete_one(document)
|
|
397
400
|
_unscoped.delete_one(document)
|
|
@@ -405,8 +408,6 @@ module Mongoid
|
|
|
405
408
|
# relation.integrate(document)
|
|
406
409
|
#
|
|
407
410
|
# @param [ Document ] document The document to integrate.
|
|
408
|
-
#
|
|
409
|
-
# @since 2.1.0
|
|
410
411
|
def integrate(document)
|
|
411
412
|
characterize_one(document)
|
|
412
413
|
bind_one(document)
|
|
@@ -435,8 +436,6 @@ module Mongoid
|
|
|
435
436
|
# relation.persistable?
|
|
436
437
|
#
|
|
437
438
|
# @return [ true, false ] If the association is persistable.
|
|
438
|
-
#
|
|
439
|
-
# @since 2.1.0
|
|
440
439
|
def persistable?
|
|
441
440
|
_base.persisted? && !_binding?
|
|
442
441
|
end
|
|
@@ -447,8 +446,6 @@ module Mongoid
|
|
|
447
446
|
#
|
|
448
447
|
# @example Reindex the association.
|
|
449
448
|
# person.addresses.reindex
|
|
450
|
-
#
|
|
451
|
-
# @since 2.0.0.rc.1
|
|
452
449
|
def reindex
|
|
453
450
|
_unscoped.each_with_index do |doc, index|
|
|
454
451
|
doc._index = index
|
|
@@ -464,8 +461,6 @@ module Mongoid
|
|
|
464
461
|
# @param [ Array<Document> ] docs The documents to scope.
|
|
465
462
|
#
|
|
466
463
|
# @return [ Array<Document> ] The scoped docs.
|
|
467
|
-
#
|
|
468
|
-
# @since 2.4.0
|
|
469
464
|
def scope(docs)
|
|
470
465
|
unless _association.order || _association.klass.default_scoping?
|
|
471
466
|
return docs
|
|
@@ -500,8 +495,6 @@ module Mongoid
|
|
|
500
495
|
# relation._unscoped
|
|
501
496
|
#
|
|
502
497
|
# @return [ Array<Document> ] The unscoped documents.
|
|
503
|
-
#
|
|
504
|
-
# @since 2.4.0
|
|
505
498
|
def _unscoped
|
|
506
499
|
@_unscoped ||= []
|
|
507
500
|
end
|
|
@@ -514,8 +507,6 @@ module Mongoid
|
|
|
514
507
|
# @param [ Array<Document> ] docs The documents.
|
|
515
508
|
#
|
|
516
509
|
# @return [ Array<Document ] The unscoped docs.
|
|
517
|
-
#
|
|
518
|
-
# @since 2.4.0
|
|
519
510
|
def _unscoped=(docs)
|
|
520
511
|
@_unscoped = docs
|
|
521
512
|
end
|
|
@@ -537,8 +528,6 @@ module Mongoid
|
|
|
537
528
|
# Association::Embedded::EmbedsMany.embedded?
|
|
538
529
|
#
|
|
539
530
|
# @return [ true ] true.
|
|
540
|
-
#
|
|
541
|
-
# @since 2.0.0.rc.1
|
|
542
531
|
def embedded?
|
|
543
532
|
true
|
|
544
533
|
end
|
|
@@ -549,8 +538,6 @@ module Mongoid
|
|
|
549
538
|
# Association::Embedded::EmbedsMany.foreign_key_suffix
|
|
550
539
|
#
|
|
551
540
|
# @return [ nil ] nil.
|
|
552
|
-
#
|
|
553
|
-
# @since 3.0.0
|
|
554
541
|
def foreign_key_suffix
|
|
555
542
|
nil
|
|
556
543
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
require 'mongoid/association/embedded/embeds_many/binding'
|
|
5
4
|
require 'mongoid/association/embedded/embeds_many/buildable'
|
|
@@ -10,8 +9,6 @@ module Mongoid
|
|
|
10
9
|
module Embedded
|
|
11
10
|
|
|
12
11
|
# The EmbedsMany type association.
|
|
13
|
-
#
|
|
14
|
-
# @since 7.0
|
|
15
12
|
class EmbedsMany
|
|
16
13
|
include Relatable
|
|
17
14
|
include Buildable
|
|
@@ -20,8 +17,6 @@ module Mongoid
|
|
|
20
17
|
# common ones.
|
|
21
18
|
#
|
|
22
19
|
# @return [ Array<Symbol> ] The extra valid options.
|
|
23
|
-
#
|
|
24
|
-
# @since 7.0
|
|
25
20
|
ASSOCIATION_OPTIONS = [
|
|
26
21
|
:as,
|
|
27
22
|
:cascade_callbacks,
|
|
@@ -38,15 +33,11 @@ module Mongoid
|
|
|
38
33
|
# the shared ones.
|
|
39
34
|
#
|
|
40
35
|
# @return [ Array<Symbol> ] The valid options.
|
|
41
|
-
#
|
|
42
|
-
# @since 7.0
|
|
43
36
|
VALID_OPTIONS = (ASSOCIATION_OPTIONS + SHARED_OPTIONS).freeze
|
|
44
37
|
|
|
45
38
|
# Setup the instance methods, fields, etc. on the association owning class.
|
|
46
39
|
#
|
|
47
40
|
# @return [ self ]
|
|
48
|
-
#
|
|
49
|
-
# @since 7.0
|
|
50
41
|
def setup!
|
|
51
42
|
setup_instance_methods!
|
|
52
43
|
@owner_class.embedded_relations = @owner_class.embedded_relations.merge(name => self)
|
|
@@ -57,8 +48,6 @@ module Mongoid
|
|
|
57
48
|
# The field key used to store the list of association objects.
|
|
58
49
|
#
|
|
59
50
|
# @return [ String ] The field name.
|
|
60
|
-
#
|
|
61
|
-
# @since 7.0
|
|
62
51
|
def store_as
|
|
63
52
|
@store_as ||= (@options[:store_as].try(:to_s) || name.to_s)
|
|
64
53
|
end
|
|
@@ -66,8 +55,6 @@ module Mongoid
|
|
|
66
55
|
# The key that is used to get the attributes for the associated object.
|
|
67
56
|
#
|
|
68
57
|
# @return [ String ] The name of the field used to store the association.
|
|
69
|
-
#
|
|
70
|
-
# @since 7.0
|
|
71
58
|
def key
|
|
72
59
|
store_as.to_s
|
|
73
60
|
end
|
|
@@ -75,8 +62,6 @@ module Mongoid
|
|
|
75
62
|
# Is this association type embedded?
|
|
76
63
|
#
|
|
77
64
|
# @return [ true ] Always true.
|
|
78
|
-
#
|
|
79
|
-
# @since 7.0
|
|
80
65
|
def embedded?; true; end
|
|
81
66
|
|
|
82
67
|
# Get the default validation setting for the association. Determines if
|
|
@@ -86,15 +71,11 @@ module Mongoid
|
|
|
86
71
|
# Proxy.validation_default
|
|
87
72
|
#
|
|
88
73
|
# @return [ true ] Always true.
|
|
89
|
-
#
|
|
90
|
-
# @since 2.1.9
|
|
91
74
|
def validation_default; true; end
|
|
92
75
|
|
|
93
76
|
# Does this association type store the foreign key?
|
|
94
77
|
#
|
|
95
78
|
# @return [ false ] Always false.
|
|
96
|
-
#
|
|
97
|
-
# @since 7.0
|
|
98
79
|
def stores_foreign_key?; false; end
|
|
99
80
|
|
|
100
81
|
# The primary key
|
|
@@ -105,8 +86,6 @@ module Mongoid
|
|
|
105
86
|
# Get the association proxy class for this association type.
|
|
106
87
|
#
|
|
107
88
|
# @return [ Association::Embedded::EmbedsMany::Proxy ] The proxy class.
|
|
108
|
-
#
|
|
109
|
-
# @since 7.0
|
|
110
89
|
def relation
|
|
111
90
|
Proxy
|
|
112
91
|
end
|
|
@@ -114,8 +93,6 @@ module Mongoid
|
|
|
114
93
|
# Is this association polymorphic?
|
|
115
94
|
#
|
|
116
95
|
# @return [ true, false ] Whether this association is polymorphic.
|
|
117
|
-
#
|
|
118
|
-
# @since 7.0
|
|
119
96
|
def polymorphic?
|
|
120
97
|
@polymorphic ||= !!@options[:as]
|
|
121
98
|
end
|
|
@@ -125,8 +102,6 @@ module Mongoid
|
|
|
125
102
|
# @note Only relevant if the association is polymorphic.
|
|
126
103
|
#
|
|
127
104
|
# @return [ String, nil ] The field for storing the associated object's type.
|
|
128
|
-
#
|
|
129
|
-
# @since 7.0
|
|
130
105
|
def type
|
|
131
106
|
@type ||= "#{as}_type" if polymorphic?
|
|
132
107
|
end
|
|
@@ -137,8 +112,6 @@ module Mongoid
|
|
|
137
112
|
# @param [ Hash ] options The options for the association.
|
|
138
113
|
#
|
|
139
114
|
# @return [ Association::Nested::Many ] The Nested Builder object.
|
|
140
|
-
#
|
|
141
|
-
# @since 7.0
|
|
142
115
|
def nested_builder(attributes, options)
|
|
143
116
|
Nested::Many.new(self, attributes, options)
|
|
144
117
|
end
|
|
@@ -152,8 +125,6 @@ module Mongoid
|
|
|
152
125
|
#
|
|
153
126
|
# @return [ Mongoid::Atomic::Paths::Embedded::Many ]
|
|
154
127
|
# The embedded many atomic path calculator.
|
|
155
|
-
#
|
|
156
|
-
# @since 2.1.0
|
|
157
128
|
def path(document)
|
|
158
129
|
Mongoid::Atomic::Paths::Embedded::Many.new(document)
|
|
159
130
|
end
|
|
@@ -162,8 +133,6 @@ module Mongoid
|
|
|
162
133
|
#
|
|
163
134
|
# @param [ Document ] base The base document.
|
|
164
135
|
# @param [ Document ] target The children documents.
|
|
165
|
-
#
|
|
166
|
-
# @since 7.0
|
|
167
136
|
def criteria(base, target)
|
|
168
137
|
criterion = klass.scoped
|
|
169
138
|
criterion.embedded = true
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Association
|
|
@@ -7,8 +6,6 @@ module Mongoid
|
|
|
7
6
|
class EmbedsOne
|
|
8
7
|
|
|
9
8
|
# Binding class for all embeds_one associations.
|
|
10
|
-
#
|
|
11
|
-
# @since 7.0
|
|
12
9
|
class Binding
|
|
13
10
|
include Bindable
|
|
14
11
|
|
|
@@ -21,8 +18,6 @@ module Mongoid
|
|
|
21
18
|
# @example Bind the document.
|
|
22
19
|
# person.name.bind(:continue => true)
|
|
23
20
|
# person.name = Name.new
|
|
24
|
-
#
|
|
25
|
-
# @since 2.0.0.rc.1
|
|
26
21
|
def bind_one
|
|
27
22
|
_target.parentize(_base)
|
|
28
23
|
binding do
|
|
@@ -36,8 +31,6 @@ module Mongoid
|
|
|
36
31
|
# @example Unbind the document.
|
|
37
32
|
# person.name.unbind(:continue => true)
|
|
38
33
|
# person.name = nil
|
|
39
|
-
#
|
|
40
|
-
# @since 2.0.0.rc.1
|
|
41
34
|
def unbind_one
|
|
42
35
|
binding do
|
|
43
36
|
_target.do_or_do_not(_association.inverse_setter(_target), nil)
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Association
|
|
@@ -7,8 +6,6 @@ module Mongoid
|
|
|
7
6
|
class EmbedsOne
|
|
8
7
|
|
|
9
8
|
# Builder class for embeds_one associations.
|
|
10
|
-
#
|
|
11
|
-
# @since 7.0
|
|
12
9
|
module Buildable
|
|
13
10
|
include Threaded::Lifecycle
|
|
14
11
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Association
|
|
@@ -11,8 +10,6 @@ module Mongoid
|
|
|
11
10
|
# The valid options when defining this association.
|
|
12
11
|
#
|
|
13
12
|
# @return [ Array<Symbol> ] The allowed options when defining this association.
|
|
14
|
-
#
|
|
15
|
-
# @since 7.0
|
|
16
13
|
VALID_OPTIONS = [
|
|
17
14
|
:autobuild,
|
|
18
15
|
:as,
|
|
@@ -34,7 +31,7 @@ module Mongoid
|
|
|
34
31
|
characterize_one(_target)
|
|
35
32
|
bind_one
|
|
36
33
|
characterize_one(_target)
|
|
37
|
-
_base.
|
|
34
|
+
_base._reset_memoized_descendants!
|
|
38
35
|
_target.save if persistable?
|
|
39
36
|
end
|
|
40
37
|
end
|
|
@@ -48,8 +45,6 @@ module Mongoid
|
|
|
48
45
|
# @param [ Document ] replacement A document to replace the target.
|
|
49
46
|
#
|
|
50
47
|
# @return [ Document, nil ] The association or nil.
|
|
51
|
-
#
|
|
52
|
-
# @since 2.0.0.rc.1
|
|
53
48
|
def substitute(replacement)
|
|
54
49
|
if replacement != self
|
|
55
50
|
if _assigning?
|
|
@@ -58,6 +53,31 @@ module Mongoid
|
|
|
58
53
|
# The associated object will be replaced by the below update if non-nil, so only
|
|
59
54
|
# run the callbacks and state-changing code by passing persist: false in that case.
|
|
60
55
|
_target.destroy(persist: !replacement) if persistable?
|
|
56
|
+
|
|
57
|
+
unless Mongoid.broken_updates
|
|
58
|
+
# A little explanation on why this is needed... Say we have three assignments:
|
|
59
|
+
#
|
|
60
|
+
# canvas.palette = palette
|
|
61
|
+
# canvas.palette = nil
|
|
62
|
+
# canvas.palette = palette
|
|
63
|
+
# Where canvas embeds_one palette.
|
|
64
|
+
#
|
|
65
|
+
# Previously, what was happening was, on the first assignment,
|
|
66
|
+
# palette was considered a "new record" (new_record?=true) and
|
|
67
|
+
# thus palette was being inserted into the database. However,
|
|
68
|
+
# on the third assignment, we're trying to reassign the palette,
|
|
69
|
+
# palette is no longer considered a new record, because it had
|
|
70
|
+
# been inserted previously. This is not exactly accurate,
|
|
71
|
+
# because the second assignment ultimately removed the palette
|
|
72
|
+
# from the database, so it needs to be reinserted. Since the
|
|
73
|
+
# palette's new_record is false, Mongoid ends up "updating" the
|
|
74
|
+
# document, which doesn't reinsert it into the database.
|
|
75
|
+
#
|
|
76
|
+
# The change I introduce here, respecifies palette as a "new
|
|
77
|
+
# record" when it gets removed from the database, so if it is
|
|
78
|
+
# reassigned, it will be reinserted into the database.
|
|
79
|
+
_target.new_record = true
|
|
80
|
+
end
|
|
61
81
|
end
|
|
62
82
|
unbind_one
|
|
63
83
|
return nil unless replacement
|
|
@@ -78,8 +98,6 @@ module Mongoid
|
|
|
78
98
|
# relation.binding([ address ])
|
|
79
99
|
#
|
|
80
100
|
# @return [ Binding ] The association's binding.
|
|
81
|
-
#
|
|
82
|
-
# @since 2.0.0.rc.1
|
|
83
101
|
def binding
|
|
84
102
|
Binding.new(_base, _target, _association)
|
|
85
103
|
end
|
|
@@ -90,8 +108,6 @@ module Mongoid
|
|
|
90
108
|
# relation.persistable?
|
|
91
109
|
#
|
|
92
110
|
# @return [ true, false ] If the association is persistable.
|
|
93
|
-
#
|
|
94
|
-
# @since 2.1.0
|
|
95
111
|
def persistable?
|
|
96
112
|
_base.persisted? && !_binding? && !_building? && !_assigning?
|
|
97
113
|
end
|
|
@@ -105,8 +121,6 @@ module Mongoid
|
|
|
105
121
|
# Association::Embedded::EmbedsOne.embedded?
|
|
106
122
|
#
|
|
107
123
|
# @return [ true ] true.
|
|
108
|
-
#
|
|
109
|
-
# @since 2.0.0.rc.1
|
|
110
124
|
def embedded?
|
|
111
125
|
true
|
|
112
126
|
end
|
|
@@ -120,8 +134,6 @@ module Mongoid
|
|
|
120
134
|
#
|
|
121
135
|
# @return [ Mongoid::Atomic::Paths::Embedded::One ]
|
|
122
136
|
# The embedded one atomic path calculator.
|
|
123
|
-
#
|
|
124
|
-
# @since 2.1.0
|
|
125
137
|
def path(document)
|
|
126
138
|
Mongoid::Atomic::Paths::Embedded::One.new(document)
|
|
127
139
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
require 'mongoid/association/embedded/embeds_one/binding'
|
|
5
4
|
require 'mongoid/association/embedded/embeds_one/buildable'
|
|
@@ -10,8 +9,6 @@ module Mongoid
|
|
|
10
9
|
module Embedded
|
|
11
10
|
|
|
12
11
|
# The EmbedsOne type association.
|
|
13
|
-
#
|
|
14
|
-
# @since 7.0
|
|
15
12
|
class EmbedsOne
|
|
16
13
|
include Relatable
|
|
17
14
|
include Buildable
|
|
@@ -20,8 +17,6 @@ module Mongoid
|
|
|
20
17
|
# common ones.
|
|
21
18
|
#
|
|
22
19
|
# @return [ Array<Symbol> ] The extra valid options.
|
|
23
|
-
#
|
|
24
|
-
# @since 7.0
|
|
25
20
|
ASSOCIATION_OPTIONS = [
|
|
26
21
|
:autobuild,
|
|
27
22
|
:as,
|
|
@@ -34,15 +29,11 @@ module Mongoid
|
|
|
34
29
|
# the shared ones.
|
|
35
30
|
#
|
|
36
31
|
# @return [ Array<Symbol> ] The valid options.
|
|
37
|
-
#
|
|
38
|
-
# @since 7.0
|
|
39
32
|
VALID_OPTIONS = (ASSOCIATION_OPTIONS + SHARED_OPTIONS).freeze
|
|
40
33
|
|
|
41
34
|
# Setup the instance methods, fields, etc. on the association owning class.
|
|
42
35
|
#
|
|
43
36
|
# @return [ self ]
|
|
44
|
-
#
|
|
45
|
-
# @since 7.0
|
|
46
37
|
def setup!
|
|
47
38
|
setup_instance_methods!
|
|
48
39
|
@owner_class.embedded_relations = @owner_class.embedded_relations.merge(name => self)
|
|
@@ -53,8 +44,6 @@ module Mongoid
|
|
|
53
44
|
# The field key used to store the association object.
|
|
54
45
|
#
|
|
55
46
|
# @return [ String ] The field name.
|
|
56
|
-
#
|
|
57
|
-
# @since 7.0
|
|
58
47
|
def store_as
|
|
59
48
|
@store_as ||= (@options[:store_as].try(:to_s) || name.to_s)
|
|
60
49
|
end
|
|
@@ -62,8 +51,6 @@ module Mongoid
|
|
|
62
51
|
# The key that is used to get the attributes for the associated object.
|
|
63
52
|
#
|
|
64
53
|
# @return [ String ] The name of the field used to store the association.
|
|
65
|
-
#
|
|
66
|
-
# @since 7.0
|
|
67
54
|
def key
|
|
68
55
|
store_as.to_s
|
|
69
56
|
end
|
|
@@ -71,8 +58,6 @@ module Mongoid
|
|
|
71
58
|
# Is this association type embedded?
|
|
72
59
|
#
|
|
73
60
|
# @return [ true ] Always true.
|
|
74
|
-
#
|
|
75
|
-
# @since 7.0
|
|
76
61
|
def embedded?; true; end
|
|
77
62
|
|
|
78
63
|
# Get the default validation setting for the association. Determines if
|
|
@@ -82,15 +67,11 @@ module Mongoid
|
|
|
82
67
|
# Proxy.validation_default
|
|
83
68
|
#
|
|
84
69
|
# @return [ true, false ] The validation default.
|
|
85
|
-
#
|
|
86
|
-
# @since 2.1.9
|
|
87
70
|
def validation_default; true; end
|
|
88
71
|
|
|
89
72
|
# Does this association type store the foreign key?
|
|
90
73
|
#
|
|
91
74
|
# @return [ false ] Always false.
|
|
92
|
-
#
|
|
93
|
-
# @since 7.0
|
|
94
75
|
def stores_foreign_key?; false; end
|
|
95
76
|
|
|
96
77
|
# The primary key
|
|
@@ -101,8 +82,6 @@ module Mongoid
|
|
|
101
82
|
# Get the association proxy class for this association type.
|
|
102
83
|
#
|
|
103
84
|
# @return [ Association::Embedded::EmbedsMany::Proxy ] The proxy class.
|
|
104
|
-
#
|
|
105
|
-
# @since 7.0
|
|
106
85
|
def relation
|
|
107
86
|
Proxy
|
|
108
87
|
end
|
|
@@ -110,8 +89,6 @@ module Mongoid
|
|
|
110
89
|
# Is this association polymorphic?
|
|
111
90
|
#
|
|
112
91
|
# @return [ true, false ] Whether this association is polymorphic.
|
|
113
|
-
#
|
|
114
|
-
# @since 7.0
|
|
115
92
|
def polymorphic?
|
|
116
93
|
@polymorphic ||= !!@options[:as]
|
|
117
94
|
end
|
|
@@ -121,8 +98,6 @@ module Mongoid
|
|
|
121
98
|
# @note Only relevant if the association is polymorphic.
|
|
122
99
|
#
|
|
123
100
|
# @return [ String, nil ] The field for storing the associated object's type.
|
|
124
|
-
#
|
|
125
|
-
# @since 7.0
|
|
126
101
|
def type
|
|
127
102
|
@type ||= "#{as}_type" if polymorphic?
|
|
128
103
|
end
|
|
@@ -133,8 +108,6 @@ module Mongoid
|
|
|
133
108
|
# @param [ Hash ] options The options for the association.
|
|
134
109
|
#
|
|
135
110
|
# @return [ Association::Nested::One ] The Nested Builder object.
|
|
136
|
-
#
|
|
137
|
-
# @since 7.0
|
|
138
111
|
def nested_builder(attributes, options)
|
|
139
112
|
Nested::One.new(self, attributes, options)
|
|
140
113
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Association
|
|
@@ -13,9 +12,12 @@ module Mongoid
|
|
|
13
12
|
class_attribute :embedded, instance_reader: false
|
|
14
13
|
class_attribute :embedded_relations
|
|
15
14
|
class_attribute :relations
|
|
15
|
+
# @api private
|
|
16
|
+
class_attribute :aliased_associations
|
|
16
17
|
self.embedded = false
|
|
17
18
|
self.embedded_relations = BSON::Document.new
|
|
18
19
|
self.relations = BSON::Document.new
|
|
20
|
+
self.aliased_associations = {}
|
|
19
21
|
end
|
|
20
22
|
|
|
21
23
|
# This is convenience for libraries still on the old API.
|
|
@@ -24,8 +26,6 @@ module Mongoid
|
|
|
24
26
|
# person.associations
|
|
25
27
|
#
|
|
26
28
|
# @return [ Hash ] The associations.
|
|
27
|
-
#
|
|
28
|
-
# @since 2.3.1
|
|
29
29
|
def associations
|
|
30
30
|
self.relations
|
|
31
31
|
end
|
|
@@ -164,8 +164,6 @@ module Mongoid
|
|
|
164
164
|
# @param [ Symbol ] name The name of the association.
|
|
165
165
|
# @param [ Hash ] options The association options.
|
|
166
166
|
# @param [ Proc ] block Optional block for defining extensions.
|
|
167
|
-
#
|
|
168
|
-
# @since 2.0.0.rc.1
|
|
169
167
|
def has_and_belongs_to_many(name, options = {}, &block)
|
|
170
168
|
define_association!(__method__, name, options, &block)
|
|
171
169
|
end
|
|
@@ -198,6 +196,9 @@ module Mongoid
|
|
|
198
196
|
Association::MACRO_MAPPING[macro_name].new(self, name, options, &block).tap do |assoc|
|
|
199
197
|
assoc.setup!
|
|
200
198
|
self.relations = self.relations.merge(name => assoc)
|
|
199
|
+
if assoc.respond_to?(:store_as) && assoc.store_as != name
|
|
200
|
+
self.aliased_associations[assoc.store_as] = name
|
|
201
|
+
end
|
|
201
202
|
end
|
|
202
203
|
end
|
|
203
204
|
end
|