mongoid 7.3.2 → 7.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +17 -17
- data/README.md +2 -2
- data/lib/config/locales/en.yml +30 -16
- data/lib/mongoid/association/accessors.rb +0 -27
- data/lib/mongoid/association/bindable.rb +0 -21
- data/lib/mongoid/association/builders.rb +0 -9
- data/lib/mongoid/association/constrainable.rb +0 -3
- data/lib/mongoid/association/depending.rb +0 -7
- data/lib/mongoid/association/eager_loadable.rb +0 -3
- data/lib/mongoid/association/embedded/batchable.rb +11 -39
- data/lib/mongoid/association/embedded/cyclic.rb +2 -11
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +0 -7
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +0 -3
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +0 -13
- data/lib/mongoid/association/embedded/embedded_in.rb +0 -23
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +0 -7
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +0 -3
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +31 -44
- data/lib/mongoid/association/embedded/embeds_many.rb +0 -31
- data/lib/mongoid/association/embedded/embeds_one/binding.rb +0 -7
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +0 -3
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +26 -14
- data/lib/mongoid/association/embedded/embeds_one.rb +0 -27
- data/lib/mongoid/association/embedded.rb +0 -1
- data/lib/mongoid/association/macros.rb +6 -5
- data/lib/mongoid/association/many.rb +0 -17
- data/lib/mongoid/association/marshalable.rb +0 -5
- data/lib/mongoid/association/nested/many.rb +0 -11
- data/lib/mongoid/association/nested/nested_buildable.rb +0 -9
- data/lib/mongoid/association/nested/one.rb +1 -16
- data/lib/mongoid/association/nested.rb +0 -3
- data/lib/mongoid/association/one.rb +1 -10
- data/lib/mongoid/association/options.rb +0 -33
- data/lib/mongoid/association/proxy.rb +0 -21
- data/lib/mongoid/association/referenced/auto_save.rb +0 -9
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +0 -7
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +4 -5
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +0 -1
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +0 -13
- data/lib/mongoid/association/referenced/belongs_to.rb +9 -34
- data/lib/mongoid/association/referenced/counter_cache.rb +2 -15
- data/lib/mongoid/association/referenced/eager.rb +3 -24
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +0 -5
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +0 -3
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +0 -1
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +12 -39
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +11 -38
- data/lib/mongoid/association/referenced/has_many/binding.rb +0 -5
- data/lib/mongoid/association/referenced/has_many/buildable.rb +0 -3
- data/lib/mongoid/association/referenced/has_many/eager.rb +0 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +11 -63
- data/lib/mongoid/association/referenced/has_many/proxy.rb +18 -61
- data/lib/mongoid/association/referenced/has_many.rb +12 -39
- data/lib/mongoid/association/referenced/has_one/binding.rb +0 -7
- data/lib/mongoid/association/referenced/has_one/buildable.rb +3 -4
- data/lib/mongoid/association/referenced/has_one/eager.rb +0 -1
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +0 -15
- data/lib/mongoid/association/referenced/has_one/proxy.rb +0 -9
- data/lib/mongoid/association/referenced/has_one.rb +9 -32
- data/lib/mongoid/association/referenced/syncable.rb +0 -17
- data/lib/mongoid/association/referenced.rb +0 -1
- data/lib/mongoid/association/reflections.rb +0 -1
- data/lib/mongoid/association/relatable.rb +2 -61
- data/lib/mongoid/association.rb +0 -17
- data/lib/mongoid/atomic/modifiers.rb +4 -51
- data/lib/mongoid/atomic/paths/embedded/many.rb +0 -5
- data/lib/mongoid/atomic/paths/embedded/one.rb +0 -5
- data/lib/mongoid/atomic/paths/embedded.rb +0 -3
- data/lib/mongoid/atomic/paths/root.rb +0 -5
- data/lib/mongoid/atomic/paths.rb +0 -1
- data/lib/mongoid/atomic.rb +27 -44
- data/lib/mongoid/attributes/dynamic.rb +0 -17
- data/lib/mongoid/attributes/nested.rb +0 -5
- data/lib/mongoid/attributes/processing.rb +1 -18
- data/lib/mongoid/attributes/projector.rb +0 -1
- data/lib/mongoid/attributes/readonly.rb +0 -5
- data/lib/mongoid/attributes.rb +0 -33
- data/lib/mongoid/cacheable.rb +1 -6
- data/lib/mongoid/changeable.rb +3 -59
- data/lib/mongoid/clients/factory.rb +0 -7
- data/lib/mongoid/clients/options.rb +0 -5
- data/lib/mongoid/clients/sessions.rb +0 -7
- data/lib/mongoid/clients/storage_options.rb +0 -7
- data/lib/mongoid/clients/validators/storage.rb +0 -9
- data/lib/mongoid/clients/validators.rb +0 -1
- data/lib/mongoid/clients.rb +0 -9
- data/lib/mongoid/composable.rb +0 -7
- data/lib/mongoid/config/environment.rb +13 -6
- data/lib/mongoid/config/options.rb +0 -11
- data/lib/mongoid/config/validators/client.rb +0 -17
- data/lib/mongoid/config/validators/option.rb +0 -3
- data/lib/mongoid/config/validators.rb +0 -1
- data/lib/mongoid/config.rb +37 -29
- data/lib/mongoid/contextual/aggregable/memory.rb +14 -11
- data/lib/mongoid/contextual/aggregable/mongo.rb +15 -20
- data/lib/mongoid/contextual/aggregable/none.rb +65 -0
- data/lib/mongoid/contextual/aggregable.rb +17 -0
- data/lib/mongoid/contextual/atomic.rb +7 -27
- data/lib/mongoid/contextual/command.rb +0 -5
- data/lib/mongoid/contextual/geo_near.rb +1 -34
- data/lib/mongoid/contextual/map_reduce.rb +0 -31
- data/lib/mongoid/contextual/memory.rb +4 -59
- data/lib/mongoid/contextual/mongo.rb +132 -78
- data/lib/mongoid/contextual/none.rb +42 -28
- data/lib/mongoid/contextual/queryable.rb +0 -3
- data/lib/mongoid/contextual.rb +0 -5
- data/lib/mongoid/copyable.rb +0 -5
- data/lib/mongoid/criteria/findable.rb +0 -13
- data/lib/mongoid/criteria/includable.rb +0 -9
- data/lib/mongoid/criteria/inspectable.rb +0 -3
- data/lib/mongoid/criteria/marshalable.rb +0 -5
- data/lib/mongoid/criteria/modifiable.rb +0 -19
- data/lib/mongoid/criteria/options.rb +0 -3
- data/lib/mongoid/criteria/permission.rb +0 -1
- data/lib/mongoid/criteria/queryable/aggregable.rb +0 -13
- data/lib/mongoid/criteria/queryable/expandable.rb +0 -1
- data/lib/mongoid/criteria/queryable/extensions/array.rb +1 -26
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +0 -3
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +0 -3
- data/lib/mongoid/criteria/queryable/extensions/date.rb +0 -7
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +0 -5
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +0 -25
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +0 -13
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +0 -11
- data/lib/mongoid/criteria/queryable/extensions/object.rb +1 -28
- data/lib/mongoid/criteria/queryable/extensions/range.rb +38 -16
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +0 -9
- data/lib/mongoid/criteria/queryable/extensions/set.rb +0 -3
- data/lib/mongoid/criteria/queryable/extensions/string.rb +0 -17
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +0 -9
- data/lib/mongoid/criteria/queryable/extensions/time.rb +0 -7
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +0 -7
- data/lib/mongoid/criteria/queryable/extensions.rb +0 -1
- data/lib/mongoid/criteria/queryable/key.rb +1 -14
- data/lib/mongoid/criteria/queryable/macroable.rb +0 -3
- data/lib/mongoid/criteria/queryable/mergeable.rb +1 -30
- data/lib/mongoid/criteria/queryable/optional.rb +0 -45
- data/lib/mongoid/criteria/queryable/options.rb +0 -19
- data/lib/mongoid/criteria/queryable/pipeline.rb +0 -13
- data/lib/mongoid/criteria/queryable/selectable.rb +22 -69
- data/lib/mongoid/criteria/queryable/selector.rb +0 -17
- data/lib/mongoid/criteria/queryable/smash.rb +0 -11
- data/lib/mongoid/criteria/queryable/storable.rb +11 -7
- data/lib/mongoid/criteria/queryable.rb +0 -7
- data/lib/mongoid/criteria/scopable.rb +25 -19
- data/lib/mongoid/criteria.rb +0 -57
- data/lib/mongoid/document.rb +3 -53
- data/lib/mongoid/equality.rb +26 -10
- data/lib/mongoid/errors/ambiguous_relationship.rb +2 -5
- data/lib/mongoid/errors/callback.rb +0 -3
- data/lib/mongoid/errors/criteria_argument_required.rb +0 -1
- data/lib/mongoid/errors/delete_restriction.rb +0 -3
- data/lib/mongoid/errors/document_not_destroyed.rb +2 -7
- data/lib/mongoid/errors/document_not_found.rb +0 -9
- data/lib/mongoid/errors/eager_load.rb +0 -3
- data/lib/mongoid/errors/empty_config_file.rb +25 -0
- data/lib/mongoid/errors/in_memory_collation_not_supported.rb +0 -3
- data/lib/mongoid/errors/invalid_collection.rb +0 -1
- data/lib/mongoid/errors/invalid_config_file.rb +25 -0
- data/lib/mongoid/errors/invalid_config_option.rb +0 -3
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +0 -3
- data/lib/mongoid/errors/invalid_discriminator_key_target.rb +0 -1
- data/lib/mongoid/errors/invalid_elem_match_operator.rb +0 -1
- data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +0 -1
- data/lib/mongoid/errors/invalid_expression_operator.rb +0 -1
- data/lib/mongoid/errors/invalid_field.rb +0 -5
- data/lib/mongoid/errors/invalid_field_operator.rb +0 -1
- data/lib/mongoid/errors/invalid_field_option.rb +0 -3
- data/lib/mongoid/errors/invalid_find.rb +0 -3
- data/lib/mongoid/errors/invalid_includes.rb +0 -3
- data/lib/mongoid/errors/invalid_index.rb +0 -3
- data/lib/mongoid/errors/invalid_options.rb +0 -3
- data/lib/mongoid/errors/invalid_path.rb +0 -3
- data/lib/mongoid/errors/invalid_persistence_option.rb +0 -5
- data/lib/mongoid/errors/invalid_query.rb +0 -1
- data/lib/mongoid/errors/invalid_relation.rb +0 -7
- data/lib/mongoid/errors/invalid_relation_option.rb +0 -3
- data/lib/mongoid/errors/invalid_scope.rb +0 -3
- data/lib/mongoid/errors/invalid_session_use.rb +1 -6
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +0 -1
- data/lib/mongoid/errors/invalid_storage_options.rb +0 -3
- data/lib/mongoid/errors/invalid_storage_parent.rb +0 -3
- data/lib/mongoid/errors/invalid_time.rb +0 -3
- data/lib/mongoid/errors/invalid_value.rb +0 -1
- data/lib/mongoid/errors/inverse_not_found.rb +0 -3
- data/lib/mongoid/errors/mixed_client_configuration.rb +0 -3
- data/lib/mongoid/errors/mixed_relations.rb +0 -3
- data/lib/mongoid/errors/mongoid_error.rb +0 -9
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +0 -3
- data/lib/mongoid/errors/no_client_config.rb +0 -3
- data/lib/mongoid/errors/no_client_database.rb +0 -3
- data/lib/mongoid/errors/no_client_hosts.rb +0 -3
- data/lib/mongoid/errors/no_clients_config.rb +0 -3
- data/lib/mongoid/errors/no_default_client.rb +0 -3
- data/lib/mongoid/errors/no_environment.rb +0 -3
- data/lib/mongoid/errors/no_map_reduce_output.rb +0 -3
- data/lib/mongoid/errors/no_metadata.rb +0 -3
- data/lib/mongoid/errors/no_parent.rb +0 -3
- data/lib/mongoid/errors/readonly_attribute.rb +0 -3
- data/lib/mongoid/errors/readonly_document.rb +1 -6
- data/lib/mongoid/errors/scope_overwrite.rb +0 -1
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +0 -1
- data/lib/mongoid/errors/unknown_attribute.rb +0 -3
- data/lib/mongoid/errors/unknown_model.rb +0 -3
- data/lib/mongoid/errors/unsaved_document.rb +1 -2
- data/lib/mongoid/errors/unsupported_javascript.rb +0 -3
- data/lib/mongoid/errors/validations.rb +0 -1
- data/lib/mongoid/errors.rb +2 -1
- data/lib/mongoid/evolvable.rb +0 -3
- data/lib/mongoid/extensions/array.rb +3 -29
- data/lib/mongoid/extensions/big_decimal.rb +0 -11
- data/lib/mongoid/extensions/boolean.rb +0 -3
- data/lib/mongoid/extensions/date.rb +0 -9
- data/lib/mongoid/extensions/date_time.rb +0 -9
- data/lib/mongoid/extensions/decimal128.rb +0 -5
- data/lib/mongoid/extensions/false_class.rb +1 -6
- data/lib/mongoid/extensions/float.rb +0 -7
- data/lib/mongoid/extensions/hash.rb +0 -27
- data/lib/mongoid/extensions/integer.rb +0 -9
- data/lib/mongoid/extensions/module.rb +0 -3
- data/lib/mongoid/extensions/nil_class.rb +0 -5
- data/lib/mongoid/extensions/object.rb +1 -40
- data/lib/mongoid/extensions/object_id.rb +0 -7
- data/lib/mongoid/extensions/range.rb +0 -11
- data/lib/mongoid/extensions/regexp.rb +0 -3
- data/lib/mongoid/extensions/set.rb +0 -7
- data/lib/mongoid/extensions/string.rb +1 -30
- data/lib/mongoid/extensions/symbol.rb +0 -7
- data/lib/mongoid/extensions/time.rb +0 -11
- data/lib/mongoid/extensions/time_with_zone.rb +13 -9
- data/lib/mongoid/extensions/true_class.rb +1 -6
- data/lib/mongoid/extensions.rb +15 -3
- data/lib/mongoid/factory.rb +1 -2
- data/lib/mongoid/fields/foreign_key.rb +0 -21
- data/lib/mongoid/fields/localized.rb +0 -11
- data/lib/mongoid/fields/standard.rb +0 -33
- data/lib/mongoid/fields/validators/macro.rb +0 -9
- data/lib/mongoid/fields/validators.rb +0 -1
- data/lib/mongoid/fields.rb +64 -57
- data/lib/mongoid/findable.rb +0 -5
- data/lib/mongoid/indexable/specification.rb +0 -15
- data/lib/mongoid/indexable/validators/options.rb +0 -7
- data/lib/mongoid/indexable.rb +1 -18
- data/lib/mongoid/inspectable.rb +1 -10
- data/lib/mongoid/interceptable.rb +0 -25
- data/lib/mongoid/loggable.rb +0 -9
- data/lib/mongoid/matchable.rb +0 -5
- data/lib/mongoid/matcher/eq_impl.rb +37 -2
- data/lib/mongoid/matcher/eq_impl_with_regexp.rb +6 -1
- data/lib/mongoid/persistable/creatable.rb +1 -20
- data/lib/mongoid/persistable/deletable.rb +0 -17
- data/lib/mongoid/persistable/destroyable.rb +0 -7
- data/lib/mongoid/persistable/incrementable.rb +0 -5
- data/lib/mongoid/persistable/logical.rb +0 -5
- data/lib/mongoid/persistable/poppable.rb +0 -5
- data/lib/mongoid/persistable/pullable.rb +0 -7
- data/lib/mongoid/persistable/pushable.rb +0 -7
- data/lib/mongoid/persistable/renamable.rb +0 -5
- data/lib/mongoid/persistable/savable.rb +0 -7
- data/lib/mongoid/persistable/settable.rb +0 -5
- data/lib/mongoid/persistable/unsettable.rb +0 -5
- data/lib/mongoid/persistable/updatable.rb +2 -17
- data/lib/mongoid/persistable/upsertable.rb +0 -7
- data/lib/mongoid/persistable.rb +0 -23
- data/lib/mongoid/persistence_context.rb +3 -28
- data/lib/mongoid/positional.rb +0 -5
- data/lib/mongoid/query_cache.rb +11 -34
- data/lib/mongoid/railtie.rb +0 -15
- data/lib/mongoid/railties/controller_runtime.rb +0 -1
- data/lib/mongoid/reloadable.rb +4 -16
- data/lib/mongoid/scopable.rb +6 -34
- data/lib/mongoid/selectable.rb +0 -9
- data/lib/mongoid/serializable.rb +0 -15
- data/lib/mongoid/shardable.rb +0 -7
- data/lib/mongoid/stateful.rb +0 -9
- data/lib/mongoid/stringified_symbol.rb +2 -3
- data/lib/mongoid/tasks/database.rb +1 -6
- data/lib/mongoid/threaded/lifecycle.rb +0 -21
- data/lib/mongoid/threaded.rb +0 -55
- data/lib/mongoid/timestamps/created/short.rb +0 -1
- data/lib/mongoid/timestamps/created.rb +0 -1
- data/lib/mongoid/timestamps/short.rb +0 -1
- data/lib/mongoid/timestamps/timeless.rb +0 -7
- data/lib/mongoid/timestamps/updated/short.rb +0 -1
- data/lib/mongoid/timestamps/updated.rb +0 -3
- data/lib/mongoid/timestamps.rb +0 -1
- data/lib/mongoid/touchable.rb +10 -7
- data/lib/mongoid/traversable.rb +64 -53
- data/lib/mongoid/validatable/associated.rb +0 -3
- data/lib/mongoid/validatable/format.rb +0 -1
- data/lib/mongoid/validatable/length.rb +0 -1
- data/lib/mongoid/validatable/localizable.rb +0 -3
- data/lib/mongoid/validatable/macros.rb +0 -7
- data/lib/mongoid/validatable/presence.rb +1 -8
- data/lib/mongoid/validatable/queryable.rb +0 -3
- data/lib/mongoid/validatable/uniqueness.rb +15 -30
- data/lib/mongoid/validatable.rb +1 -22
- data/lib/mongoid/version.rb +1 -2
- data/lib/mongoid.rb +0 -15
- data/lib/rails/generators/mongoid/config/config_generator.rb +0 -1
- data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
- data/lib/rails/generators/mongoid_generator.rb +0 -1
- data/lib/rails/mongoid.rb +0 -3
- data/spec/integration/app_spec.rb +0 -1
- data/spec/integration/associations/belongs_to_spec.rb +0 -1
- data/spec/integration/associations/embedded_dirty_spec.rb +29 -0
- data/spec/integration/associations/embedded_spec.rb +0 -1
- data/spec/integration/associations/embeds_many_spec.rb +139 -1
- data/spec/integration/associations/embeds_one_spec.rb +0 -1
- data/spec/integration/associations/foreign_key_spec.rb +0 -1
- data/spec/integration/associations/foreign_key_spec_models.rb +0 -1
- data/spec/integration/associations/has_many_spec.rb +0 -1
- data/spec/integration/associations/has_one_spec.rb +0 -1
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +0 -1
- data/spec/integration/associations/reverse_population_spec.rb +0 -1
- data/spec/integration/associations/reverse_population_spec_models.rb +0 -1
- data/spec/integration/associations/scope_option_spec.rb +101 -0
- data/spec/integration/atomic/modifiers_spec.rb +0 -1
- data/spec/integration/bson_regexp_raw_spec.rb +0 -1
- data/spec/integration/callbacks_models.rb +12 -0
- data/spec/integration/callbacks_spec.rb +18 -6
- data/spec/integration/contextual/empty_spec.rb +141 -0
- data/spec/integration/criteria/alias_query_spec.rb +161 -0
- data/spec/integration/criteria/date_field_spec.rb +0 -1
- data/spec/integration/criteria/default_scope_spec.rb +51 -0
- data/spec/integration/criteria/logical_spec.rb +30 -0
- data/spec/integration/criteria/range_spec.rb +265 -0
- data/spec/integration/criteria/time_with_zone_spec.rb +125 -15
- data/spec/integration/discriminator_key_spec.rb +0 -1
- data/spec/integration/discriminator_value_spec.rb +0 -1
- data/spec/integration/document_spec.rb +0 -1
- data/spec/integration/i18n_fallbacks_spec.rb +0 -1
- data/spec/integration/matcher_examples_spec.rb +0 -1
- data/spec/integration/matcher_operator_spec.rb +27 -3
- data/spec/integration/matcher_spec.rb +95 -1
- data/spec/integration/server_query_spec.rb +0 -1
- data/spec/integration/shardable_spec.rb +0 -1
- data/spec/integration/stringified_symbol_field_spec.rb +16 -3
- data/spec/lite_spec_helper.rb +8 -2
- data/spec/mongoid/association/accessors_spec.rb +44 -15
- data/spec/mongoid/association/auto_save_spec.rb +72 -34
- data/spec/mongoid/association/builders_spec.rb +1 -2
- data/spec/mongoid/association/constrainable_spec.rb +0 -1
- data/spec/mongoid/association/counter_cache_spec.rb +32 -33
- data/spec/mongoid/association/depending_spec.rb +12 -13
- data/spec/mongoid/association/eager_spec.rb +4 -5
- data/spec/mongoid/association/embedded/cyclic_spec.rb +2 -3
- data/spec/mongoid/association/embedded/dirty_spec.rb +2 -3
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +13 -14
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +384 -135
- data/spec/mongoid/association/embedded/embeds_many_models.rb +16 -1
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +21 -22
- data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one_models.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +0 -1
- data/spec/mongoid/association/macros_spec.rb +9 -10
- data/spec/mongoid/association/nested/many_spec.rb +0 -1
- data/spec/mongoid/association/nested/one_spec.rb +0 -1
- data/spec/mongoid/association/options_spec.rb +0 -1
- data/spec/mongoid/association/polymorphic_spec.rb +0 -1
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +0 -1
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +55 -17
- data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +50 -15
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +57 -53
- data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +20 -1
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +22 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +26 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +31 -3
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +179 -154
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +18 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +21 -1
- data/spec/mongoid/association/referenced/has_many/binding_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +21 -1
- data/spec/mongoid/association/referenced/has_many/eager_spec.rb +23 -7
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +303 -125
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +227 -164
- data/spec/mongoid/association/referenced/has_many_models.rb +35 -1
- data/spec/mongoid/association/referenced/has_many_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_many_spec.rb +21 -1
- data/spec/mongoid/association/referenced/has_one/binding_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +51 -8
- data/spec/mongoid/association/referenced/has_one/eager_spec.rb +17 -2
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +26 -27
- data/spec/mongoid/association/referenced/has_one_models.rb +18 -1
- data/spec/mongoid/association/referenced/has_one_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_one_spec.rb +21 -1
- data/spec/mongoid/association/reflections_spec.rb +0 -1
- data/spec/mongoid/association/syncable_spec.rb +31 -32
- data/spec/mongoid/association_spec.rb +0 -1
- data/spec/mongoid/atomic/modifiers_spec.rb +0 -1
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +0 -1
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +0 -1
- data/spec/mongoid/atomic/paths/root_spec.rb +0 -1
- data/spec/mongoid/atomic/paths_spec.rb +0 -1
- data/spec/mongoid/atomic_spec.rb +6 -7
- data/spec/mongoid/attributes/dynamic_spec.rb +0 -1
- data/spec/mongoid/attributes/nested_spec.rb +66 -67
- data/spec/mongoid/attributes/projector_spec.rb +5 -2
- data/spec/mongoid/attributes/readonly_spec.rb +22 -23
- data/spec/mongoid/attributes_spec.rb +32 -33
- data/spec/mongoid/cacheable_spec.rb +1 -2
- data/spec/mongoid/changeable_spec.rb +35 -36
- data/spec/mongoid/clients/factory_spec.rb +9 -4
- data/spec/mongoid/clients/options_spec.rb +15 -10
- data/spec/mongoid/clients/sessions_spec.rb +22 -23
- data/spec/mongoid/clients/transactions_spec.rb +49 -27
- data/spec/mongoid/clients_spec.rb +6 -7
- data/spec/mongoid/composable_spec.rb +0 -1
- data/spec/mongoid/config/environment_spec.rb +86 -9
- data/spec/mongoid/config/options_spec.rb +0 -1
- data/spec/mongoid/config_spec.rb +194 -17
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +51 -12
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +120 -21
- data/spec/mongoid/contextual/aggregable/none_spec.rb +60 -0
- data/spec/mongoid/contextual/atomic_spec.rb +109 -71
- data/spec/mongoid/contextual/geo_near_spec.rb +18 -19
- data/spec/mongoid/contextual/map_reduce_spec.rb +2 -3
- data/spec/mongoid/contextual/memory_spec.rb +23 -24
- data/spec/mongoid/contextual/mongo_spec.rb +339 -77
- data/spec/mongoid/contextual/none_spec.rb +7 -82
- data/spec/mongoid/copyable_spec.rb +11 -12
- data/spec/mongoid/copyable_spec_models.rb +0 -1
- data/spec/mongoid/criteria/findable_spec.rb +23 -24
- data/spec/mongoid/criteria/inspectable_spec.rb +0 -1
- data/spec/mongoid/criteria/marshalable_spec.rb +0 -1
- data/spec/mongoid/criteria/modifiable_spec.rb +36 -37
- data/spec/mongoid/criteria/options_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/aggregable_spec.rb +1 -2
- data/spec/mongoid/criteria/queryable/expandable_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +237 -179
- data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/key_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/optional_spec.rb +1 -2
- data/spec/mongoid/criteria/queryable/options_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/queryable_spec.rb +1 -2
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +0 -1
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +15 -16
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/selector_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/smash_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/storable_spec.rb +37 -1
- data/spec/mongoid/criteria/scopable_spec.rb +127 -1
- data/spec/mongoid/criteria_projection_spec.rb +3 -4
- data/spec/mongoid/criteria_spec.rb +546 -186
- data/spec/mongoid/document_fields_spec.rb +0 -1
- data/spec/mongoid/document_persistence_context_spec.rb +0 -1
- data/spec/mongoid/document_query_spec.rb +0 -1
- data/spec/mongoid/document_spec.rb +32 -34
- data/spec/mongoid/equality_spec.rb +142 -41
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +0 -1
- data/spec/mongoid/errors/callback_spec.rb +0 -1
- data/spec/mongoid/errors/delete_restriction_spec.rb +0 -1
- data/spec/mongoid/errors/document_not_destroyed_spec.rb +0 -1
- data/spec/mongoid/errors/document_not_found_spec.rb +0 -1
- data/spec/mongoid/errors/eager_load_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_collection_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_config_file_spec.rb +31 -0
- data/spec/mongoid/errors/invalid_config_option_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_field_option_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_field_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_find_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_includes_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_index_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_options_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_path_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_relation_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_scope_spec.rb +1 -2
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_time_spec.rb +0 -1
- data/spec/mongoid/errors/inverse_not_found_spec.rb +0 -1
- data/spec/mongoid/errors/mixed_client_configuration_spec.rb +0 -1
- data/spec/mongoid/errors/mixed_relations_spec.rb +0 -1
- data/spec/mongoid/errors/mongoid_error_spec.rb +0 -1
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +0 -1
- data/spec/mongoid/errors/no_client_config_spec.rb +0 -1
- data/spec/mongoid/errors/no_client_database_spec.rb +0 -1
- data/spec/mongoid/errors/no_client_hosts_spec.rb +0 -1
- data/spec/mongoid/errors/no_clients_config_spec.rb +0 -1
- data/spec/mongoid/errors/no_environment_spec.rb +0 -1
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +0 -1
- data/spec/mongoid/errors/no_metadata_spec.rb +0 -1
- data/spec/mongoid/errors/no_parent_spec.rb +0 -1
- data/spec/mongoid/errors/readonly_attribute_spec.rb +0 -1
- data/spec/mongoid/errors/readonly_document_spec.rb +0 -1
- data/spec/mongoid/errors/scope_overwrite_spec.rb +0 -1
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +0 -1
- data/spec/mongoid/errors/unknown_attribute_spec.rb +2 -3
- data/spec/mongoid/errors/unsaved_document_spec.rb +0 -1
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +0 -1
- data/spec/mongoid/errors/validations_spec.rb +0 -1
- data/spec/mongoid/extensions/array_spec.rb +0 -1
- data/spec/mongoid/extensions/big_decimal_spec.rb +0 -1
- data/spec/mongoid/extensions/binary_spec.rb +0 -1
- data/spec/mongoid/extensions/boolean_spec.rb +0 -1
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +0 -1
- data/spec/mongoid/extensions/date_spec.rb +0 -1
- data/spec/mongoid/extensions/date_time_spec.rb +0 -1
- data/spec/mongoid/extensions/decimal128_spec.rb +0 -1
- data/spec/mongoid/extensions/false_class_spec.rb +0 -1
- data/spec/mongoid/extensions/float_spec.rb +0 -1
- data/spec/mongoid/extensions/hash_spec.rb +0 -1
- data/spec/mongoid/extensions/integer_spec.rb +0 -1
- data/spec/mongoid/extensions/module_spec.rb +0 -1
- data/spec/mongoid/extensions/nil_class_spec.rb +0 -1
- data/spec/mongoid/extensions/object_id_spec.rb +0 -1
- data/spec/mongoid/extensions/object_spec.rb +0 -1
- data/spec/mongoid/extensions/range_spec.rb +0 -1
- data/spec/mongoid/extensions/regexp_spec.rb +0 -1
- data/spec/mongoid/extensions/set_spec.rb +0 -1
- data/spec/mongoid/extensions/string_spec.rb +2 -3
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +0 -1
- data/spec/mongoid/extensions/symbol_spec.rb +0 -1
- data/spec/mongoid/extensions/time_spec.rb +0 -1
- data/spec/mongoid/extensions/time_with_zone_spec.rb +0 -1
- data/spec/mongoid/extensions/true_class_spec.rb +0 -1
- data/spec/mongoid/extensions_spec.rb +14 -3
- data/spec/mongoid/factory_spec.rb +1 -1
- data/spec/mongoid/fields/foreign_key_spec.rb +0 -1
- data/spec/mongoid/fields/localized_spec.rb +0 -1
- data/spec/mongoid/fields/standard_spec.rb +0 -1
- data/spec/mongoid/fields_spec.rb +326 -31
- data/spec/mongoid/findable_spec.rb +21 -22
- data/spec/mongoid/indexable/specification_spec.rb +0 -1
- data/spec/mongoid/indexable_spec.rb +0 -1
- data/spec/mongoid/inspectable_spec.rb +0 -1
- data/spec/mongoid/interceptable_spec.rb +102 -95
- data/spec/mongoid/loggable_spec.rb +0 -1
- data/spec/mongoid/matcher/extract_attribute_spec.rb +5 -2
- data/spec/mongoid/persistable/creatable_spec.rb +2 -3
- data/spec/mongoid/persistable/deletable_spec.rb +18 -19
- data/spec/mongoid/persistable/destroyable_spec.rb +8 -9
- data/spec/mongoid/persistable/incrementable_spec.rb +8 -9
- data/spec/mongoid/persistable/logical_spec.rb +4 -5
- data/spec/mongoid/persistable/poppable_spec.rb +4 -5
- data/spec/mongoid/persistable/pullable_spec.rb +8 -9
- data/spec/mongoid/persistable/pushable_spec.rb +8 -9
- data/spec/mongoid/persistable/renamable_spec.rb +3 -4
- data/spec/mongoid/persistable/savable_spec.rb +15 -11
- data/spec/mongoid/persistable/settable_spec.rb +9 -10
- data/spec/mongoid/persistable/unsettable_spec.rb +4 -5
- data/spec/mongoid/persistable/updatable_spec.rb +43 -24
- data/spec/mongoid/persistable/upsertable_spec.rb +1 -2
- data/spec/mongoid/persistable_spec.rb +1 -2
- data/spec/mongoid/persistence_context_spec.rb +0 -1
- data/spec/mongoid/positional_spec.rb +0 -1
- data/spec/mongoid/query_cache_middleware_spec.rb +1 -2
- data/spec/mongoid/query_cache_spec.rb +56 -10
- data/spec/mongoid/relations/proxy_spec.rb +6 -7
- data/spec/mongoid/reloadable_spec.rb +209 -23
- data/spec/mongoid/scopable_spec.rb +65 -22
- data/spec/mongoid/selectable_spec.rb +6 -7
- data/spec/mongoid/serializable_spec.rb +9 -10
- data/spec/mongoid/shardable_spec.rb +2 -3
- data/spec/mongoid/stateful_spec.rb +1 -2
- data/spec/mongoid/tasks/database_rake_spec.rb +0 -1
- data/spec/mongoid/tasks/database_spec.rb +0 -1
- data/spec/mongoid/threaded_spec.rb +2 -3
- data/spec/mongoid/timestamps/created/short_spec.rb +1 -2
- data/spec/mongoid/timestamps/created_spec.rb +1 -2
- data/spec/mongoid/timestamps/timeless_spec.rb +2 -3
- data/spec/mongoid/timestamps/updated/short_spec.rb +3 -4
- data/spec/mongoid/timestamps/updated_spec.rb +3 -4
- data/spec/mongoid/timestamps_spec.rb +6 -7
- data/spec/mongoid/touchable_spec.rb +33 -20
- data/spec/mongoid/touchable_spec_models.rb +2 -1
- data/spec/mongoid/traversable_spec.rb +65 -2
- data/spec/mongoid/validatable/associated_spec.rb +0 -1
- data/spec/mongoid/validatable/format_spec.rb +0 -1
- data/spec/mongoid/validatable/length_spec.rb +0 -1
- data/spec/mongoid/validatable/numericality_spec.rb +0 -1
- data/spec/mongoid/validatable/presence_spec.rb +26 -23
- data/spec/mongoid/validatable/uniqueness_spec.rb +67 -68
- data/spec/mongoid/validatable_spec.rb +2 -3
- data/spec/mongoid_spec.rb +0 -1
- data/spec/rails/controller_extension/controller_runtime_spec.rb +0 -1
- data/spec/rails/mongoid_spec.rb +0 -1
- data/spec/shared/lib/mrss/cluster_config.rb +6 -1
- data/spec/shared/lib/mrss/constraints.rb +23 -5
- data/spec/shared/lib/mrss/docker_runner.rb +1 -1
- data/spec/shared/lib/mrss/event_subscriber.rb +200 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +8 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +17 -12
- data/spec/shared/lib/mrss/session_registry.rb +69 -0
- data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
- data/spec/shared/share/Dockerfile.erb +27 -10
- data/spec/shared/shlib/distro.sh +2 -1
- data/spec/shared/shlib/server.sh +85 -23
- data/spec/shared/shlib/set_env.sh +6 -5
- data/spec/spec_helper.rb +12 -22
- data/spec/support/authorization.rb +0 -1
- data/spec/support/constraints.rb +0 -1
- data/spec/support/expectations.rb +0 -1
- data/spec/support/macros.rb +22 -1
- data/spec/support/models/account.rb +1 -2
- data/spec/support/models/acolyte.rb +0 -1
- data/spec/support/models/actor.rb +0 -1
- data/spec/support/models/actress.rb +0 -1
- data/spec/support/models/address.rb +0 -1
- data/spec/support/models/address_component.rb +0 -1
- data/spec/support/models/address_number.rb +0 -1
- data/spec/support/models/agency.rb +0 -1
- data/spec/support/models/agent.rb +0 -1
- data/spec/support/models/album.rb +0 -1
- data/spec/support/models/alert.rb +0 -1
- data/spec/support/models/animal.rb +0 -1
- data/spec/support/models/answer.rb +0 -1
- data/spec/support/models/appointment.rb +0 -1
- data/spec/support/models/armrest.rb +0 -1
- data/spec/support/models/array_field.rb +0 -1
- data/spec/support/models/article.rb +0 -1
- data/spec/support/models/artist.rb +2 -1
- data/spec/support/models/artwork.rb +0 -1
- data/spec/support/models/audible_sound.rb +3 -0
- data/spec/support/models/audio.rb +0 -1
- data/spec/support/models/augmentation.rb +0 -1
- data/spec/support/models/author.rb +0 -1
- data/spec/support/models/baby.rb +0 -1
- data/spec/support/models/band.rb +4 -1
- data/spec/support/models/bar.rb +0 -1
- data/spec/support/models/basic.rb +0 -1
- data/spec/support/models/bed.rb +0 -1
- data/spec/support/models/big_palette.rb +0 -1
- data/spec/support/models/birthday.rb +0 -1
- data/spec/support/models/bolt.rb +0 -1
- data/spec/support/models/bomb.rb +0 -1
- data/spec/support/models/book.rb +0 -1
- data/spec/support/models/breed.rb +0 -1
- data/spec/support/models/browser.rb +0 -1
- data/spec/support/models/building.rb +0 -1
- data/spec/support/models/building_address.rb +0 -1
- data/spec/support/models/bus.rb +0 -1
- data/spec/support/models/business.rb +0 -1
- data/spec/support/models/callback_test.rb +0 -1
- data/spec/support/models/canvas.rb +0 -1
- data/spec/support/models/car.rb +0 -1
- data/spec/support/models/cat.rb +0 -1
- data/spec/support/models/category.rb +0 -1
- data/spec/support/models/child.rb +0 -1
- data/spec/support/models/child_doc.rb +3 -4
- data/spec/support/models/church.rb +0 -1
- data/spec/support/models/circle.rb +0 -1
- data/spec/support/models/circuit.rb +0 -1
- data/spec/support/models/circus.rb +0 -1
- data/spec/support/models/code.rb +0 -1
- data/spec/support/models/coding/pull_request.rb +0 -1
- data/spec/support/models/coding.rb +0 -1
- data/spec/support/models/comment.rb +0 -1
- data/spec/support/models/company.rb +0 -1
- data/spec/support/models/consumption_period.rb +0 -1
- data/spec/support/models/contextable_item.rb +0 -1
- data/spec/support/models/contractor.rb +0 -1
- data/spec/support/models/cookie.rb +0 -1
- data/spec/support/models/country_code.rb +2 -1
- data/spec/support/models/courier_job.rb +0 -1
- data/spec/support/models/crate.rb +0 -1
- data/spec/support/models/customer.rb +0 -1
- data/spec/support/models/customer_address.rb +0 -1
- data/spec/support/models/deed.rb +0 -1
- data/spec/support/models/definition.rb +0 -1
- data/spec/support/models/delegating_patient.rb +0 -1
- data/spec/support/models/description.rb +0 -1
- data/spec/support/models/dictionary.rb +0 -1
- data/spec/support/models/division.rb +0 -1
- data/spec/support/models/doctor.rb +0 -1
- data/spec/support/models/dog.rb +0 -1
- data/spec/support/models/dokument.rb +0 -1
- data/spec/support/models/draft.rb +0 -1
- data/spec/support/models/dragon.rb +0 -1
- data/spec/support/models/driver.rb +0 -1
- data/spec/support/models/drug.rb +0 -1
- data/spec/support/models/dungeon.rb +0 -1
- data/spec/support/models/edit.rb +0 -1
- data/spec/support/models/email.rb +0 -1
- data/spec/support/models/employer.rb +0 -1
- data/spec/support/models/entry.rb +0 -1
- data/spec/support/models/eraser.rb +0 -1
- data/spec/support/models/even.rb +0 -1
- data/spec/support/models/event.rb +0 -1
- data/spec/support/models/exhibition.rb +0 -1
- data/spec/support/models/exhibitor.rb +0 -1
- data/spec/support/models/explosion.rb +0 -1
- data/spec/support/models/eye.rb +0 -1
- data/spec/support/models/eye_bowl.rb +0 -1
- data/spec/support/models/face.rb +0 -1
- data/spec/support/models/favorite.rb +0 -1
- data/spec/support/models/filesystem.rb +0 -1
- data/spec/support/models/fire_hydrant.rb +0 -1
- data/spec/support/models/firefox.rb +0 -1
- data/spec/support/models/fish.rb +0 -1
- data/spec/support/models/folder.rb +0 -1
- data/spec/support/models/folder_item.rb +0 -1
- data/spec/support/models/fruits.rb +0 -1
- data/spec/support/models/game.rb +0 -1
- data/spec/support/models/ghost.rb +0 -1
- data/spec/support/models/guitar.rb +0 -1
- data/spec/support/models/hole.rb +0 -1
- data/spec/support/models/home.rb +0 -1
- data/spec/support/models/house.rb +0 -1
- data/spec/support/models/html_writer.rb +0 -1
- data/spec/support/models/id_key.rb +0 -1
- data/spec/support/models/idnodef.rb +0 -1
- data/spec/support/models/image.rb +0 -1
- data/spec/support/models/implant.rb +0 -1
- data/spec/support/models/instrument.rb +0 -1
- data/spec/support/models/item.rb +0 -1
- data/spec/support/models/jar.rb +0 -1
- data/spec/support/models/kaleidoscope.rb +0 -1
- data/spec/support/models/kangaroo.rb +0 -1
- data/spec/support/models/label.rb +2 -2
- data/spec/support/models/language.rb +0 -1
- data/spec/support/models/lat_lng.rb +0 -1
- data/spec/support/models/league.rb +0 -1
- data/spec/support/models/learner.rb +0 -1
- data/spec/support/models/line_item.rb +0 -1
- data/spec/support/models/location.rb +0 -1
- data/spec/support/models/login.rb +0 -1
- data/spec/support/models/manufacturer.rb +0 -1
- data/spec/support/models/meat.rb +0 -1
- data/spec/support/models/membership.rb +0 -1
- data/spec/support/models/message.rb +0 -1
- data/spec/support/models/minim.rb +0 -1
- data/spec/support/models/mixed_drink.rb +0 -1
- data/spec/support/models/mop.rb +0 -1
- data/spec/support/models/movie.rb +0 -1
- data/spec/support/models/my_hash.rb +0 -1
- data/spec/support/models/name.rb +0 -1
- data/spec/support/models/name_only.rb +0 -1
- data/spec/support/models/node.rb +0 -1
- data/spec/support/models/note.rb +0 -1
- data/spec/support/models/nut.rb +0 -1
- data/spec/support/models/odd.rb +0 -1
- data/spec/support/models/order.rb +2 -1
- data/spec/support/models/ordered_post.rb +1 -2
- data/spec/support/models/ordered_preference.rb +0 -1
- data/spec/support/models/oscar.rb +0 -1
- data/spec/support/models/other_owner_object.rb +0 -1
- data/spec/support/models/override.rb +0 -1
- data/spec/support/models/ownable.rb +0 -1
- data/spec/support/models/owner.rb +0 -1
- data/spec/support/models/pack.rb +0 -1
- data/spec/support/models/page.rb +0 -1
- data/spec/support/models/page_question.rb +0 -1
- data/spec/support/models/palette.rb +0 -1
- data/spec/support/models/parent.rb +0 -1
- data/spec/support/models/parent_doc.rb +0 -1
- data/spec/support/models/passport.rb +5 -1
- data/spec/support/models/patient.rb +0 -1
- data/spec/support/models/pdf_writer.rb +0 -1
- data/spec/support/models/pencil.rb +0 -1
- data/spec/support/models/person.rb +1 -1
- data/spec/support/models/pet.rb +0 -1
- data/spec/support/models/pet_owner.rb +0 -1
- data/spec/support/models/phone.rb +2 -2
- data/spec/support/models/piano.rb +0 -1
- data/spec/support/models/pizza.rb +0 -1
- data/spec/support/models/player.rb +0 -1
- data/spec/support/models/post.rb +0 -1
- data/spec/support/models/post_genre.rb +0 -1
- data/spec/support/models/powerup.rb +0 -1
- data/spec/support/models/preference.rb +0 -1
- data/spec/support/models/princess.rb +0 -1
- data/spec/support/models/product.rb +0 -1
- data/spec/support/models/profile.rb +0 -1
- data/spec/support/models/pronunciation.rb +0 -1
- data/spec/support/models/pub.rb +0 -1
- data/spec/support/models/publication/encyclopedia.rb +0 -1
- data/spec/support/models/publication/review.rb +0 -1
- data/spec/support/models/publication.rb +0 -1
- data/spec/support/models/purchase.rb +0 -1
- data/spec/support/models/purchased_item.rb +10 -0
- data/spec/support/models/question.rb +0 -1
- data/spec/support/models/quiz.rb +0 -1
- data/spec/support/models/rating.rb +0 -1
- data/spec/support/models/record.rb +0 -1
- data/spec/support/models/registry.rb +0 -1
- data/spec/support/models/role.rb +0 -1
- data/spec/support/models/root_category.rb +0 -1
- data/spec/support/models/sandwich.rb +0 -1
- data/spec/support/models/scheduler.rb +0 -1
- data/spec/support/models/scribe.rb +0 -1
- data/spec/support/models/sealer.rb +0 -1
- data/spec/support/models/seat.rb +0 -1
- data/spec/support/models/seo.rb +0 -1
- data/spec/support/models/series.rb +0 -1
- data/spec/support/models/server.rb +0 -1
- data/spec/support/models/service.rb +0 -1
- data/spec/support/models/shape.rb +0 -1
- data/spec/support/models/shelf.rb +0 -1
- data/spec/support/models/shipment_address.rb +0 -1
- data/spec/support/models/shipping_container.rb +0 -1
- data/spec/support/models/shipping_pack.rb +0 -1
- data/spec/support/models/shirt.rb +0 -1
- data/spec/support/models/shop.rb +0 -1
- data/spec/support/models/short_agent.rb +0 -1
- data/spec/support/models/short_quiz.rb +0 -1
- data/spec/support/models/simple.rb +0 -1
- data/spec/support/models/slave.rb +0 -1
- data/spec/support/models/song.rb +0 -1
- data/spec/support/models/sound.rb +0 -1
- data/spec/support/models/spacer.rb +0 -1
- data/spec/support/models/square.rb +0 -1
- data/spec/support/models/staff.rb +0 -1
- data/spec/support/models/store_as_dup_test1.rb +0 -1
- data/spec/support/models/store_as_dup_test2.rb +0 -1
- data/spec/support/models/store_as_dup_test3.rb +0 -1
- data/spec/support/models/store_as_dup_test4.rb +0 -1
- data/spec/support/models/strategy.rb +0 -1
- data/spec/support/models/sub_item.rb +0 -1
- data/spec/support/models/subscription.rb +0 -1
- data/spec/support/models/survey.rb +0 -1
- data/spec/support/models/symptom.rb +0 -1
- data/spec/support/models/tag.rb +0 -1
- data/spec/support/models/target.rb +0 -1
- data/spec/support/models/template.rb +0 -1
- data/spec/support/models/thing.rb +0 -1
- data/spec/support/models/threadlocker.rb +0 -1
- data/spec/support/models/title.rb +0 -1
- data/spec/support/models/tool.rb +0 -1
- data/spec/support/models/topping.rb +0 -1
- data/spec/support/models/toy.rb +0 -1
- data/spec/support/models/track.rb +0 -1
- data/spec/support/models/translation.rb +0 -1
- data/spec/support/models/tree.rb +0 -1
- data/spec/support/models/truck.rb +0 -1
- data/spec/support/models/updatable.rb +0 -1
- data/spec/support/models/user.rb +0 -1
- data/spec/support/models/user_account.rb +0 -1
- data/spec/support/models/validation_callback.rb +0 -1
- data/spec/support/models/vehicle.rb +0 -1
- data/spec/support/models/version.rb +0 -1
- data/spec/support/models/vertex.rb +0 -1
- data/spec/support/models/vet_visit.rb +0 -1
- data/spec/support/models/video.rb +0 -1
- data/spec/support/models/video_game.rb +0 -1
- data/spec/support/models/washer.rb +0 -1
- data/spec/support/models/weapon.rb +0 -1
- data/spec/support/models/wiki_page.rb +0 -1
- data/spec/support/models/word.rb +0 -1
- data/spec/support/models/word_origin.rb +0 -1
- data/spec/support/models/writer.rb +0 -1
- data/spec/support/shared/time.rb +0 -1
- data/spec/support/spec_config.rb +3 -1
- data.tar.gz.sig +0 -0
- metadata +642 -610
- metadata.gz.sig +0 -0
- data/lib/support/ruby_version.rb +0 -29
- data/spec/support/session_registry.rb +0 -50
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Association
|
|
@@ -50,8 +49,6 @@ module Mongoid
|
|
|
50
49
|
# @param [ Document, Array<Document> ] replacement The replacement.
|
|
51
50
|
#
|
|
52
51
|
# @return [ self, nil ] The association or nil.
|
|
53
|
-
#
|
|
54
|
-
# @since 2.0.0.rc.1
|
|
55
52
|
def substitute(replacement)
|
|
56
53
|
unbind_one
|
|
57
54
|
if replacement
|
|
@@ -69,8 +66,6 @@ module Mongoid
|
|
|
69
66
|
# binding([ address ])
|
|
70
67
|
#
|
|
71
68
|
# @return [ Binding ] The binding object.
|
|
72
|
-
#
|
|
73
|
-
# @since 2.0.0.rc.1
|
|
74
69
|
def binding
|
|
75
70
|
BelongsTo::Binding.new(_base, _target, _association)
|
|
76
71
|
end
|
|
@@ -85,8 +80,6 @@ module Mongoid
|
|
|
85
80
|
# @param [ Document, Object ] replacement The replacement object.
|
|
86
81
|
#
|
|
87
82
|
# @return [ Document ] The document.
|
|
88
|
-
#
|
|
89
|
-
# @since 3.1.5
|
|
90
83
|
def normalize(replacement)
|
|
91
84
|
return replacement if replacement.is_a?(Document)
|
|
92
85
|
_association.build(klass, replacement)
|
|
@@ -98,8 +91,6 @@ module Mongoid
|
|
|
98
91
|
# relation.persistable?
|
|
99
92
|
#
|
|
100
93
|
# @return [ true, false ] If the association is persistable.
|
|
101
|
-
#
|
|
102
|
-
# @since 2.1.0
|
|
103
94
|
def persistable?
|
|
104
95
|
_target.persisted? && !_binding? && !_building?
|
|
105
96
|
end
|
|
@@ -112,8 +103,6 @@ module Mongoid
|
|
|
112
103
|
#
|
|
113
104
|
# @param [ Association ] association The association object.
|
|
114
105
|
# @param [ Array<Document> ] docs The array of documents.
|
|
115
|
-
#
|
|
116
|
-
# @since 7.0
|
|
117
106
|
def eager_loader(association, docs)
|
|
118
107
|
Eager.new(association, docs)
|
|
119
108
|
end
|
|
@@ -125,8 +114,6 @@ module Mongoid
|
|
|
125
114
|
# Association::BelongsTo::Proxy.embedded?
|
|
126
115
|
#
|
|
127
116
|
# @return [ false ] Always false.
|
|
128
|
-
#
|
|
129
|
-
# @since 2.0.0.rc.1
|
|
130
117
|
def embedded?
|
|
131
118
|
false
|
|
132
119
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
require 'mongoid/association/referenced/belongs_to/binding'
|
|
5
4
|
require 'mongoid/association/referenced/belongs_to/buildable'
|
|
@@ -11,8 +10,6 @@ module Mongoid
|
|
|
11
10
|
module Referenced
|
|
12
11
|
|
|
13
12
|
# The BelongsTo type association.
|
|
14
|
-
#
|
|
15
|
-
# @since 7.0
|
|
16
13
|
class BelongsTo
|
|
17
14
|
include Relatable
|
|
18
15
|
include Buildable
|
|
@@ -21,8 +18,6 @@ module Mongoid
|
|
|
21
18
|
# common ones.
|
|
22
19
|
#
|
|
23
20
|
# @return [ Array<Symbol> ] The extra valid options.
|
|
24
|
-
#
|
|
25
|
-
# @since 7.0
|
|
26
21
|
ASSOCIATION_OPTIONS = [
|
|
27
22
|
:autobuild,
|
|
28
23
|
:autosave,
|
|
@@ -34,36 +29,29 @@ module Mongoid
|
|
|
34
29
|
:primary_key,
|
|
35
30
|
:touch,
|
|
36
31
|
:optional,
|
|
37
|
-
:required
|
|
32
|
+
:required,
|
|
33
|
+
:scope,
|
|
38
34
|
].freeze
|
|
39
35
|
|
|
40
36
|
# The complete list of valid options for this association, including
|
|
41
37
|
# the shared ones.
|
|
42
38
|
#
|
|
43
39
|
# @return [ Array<Symbol> ] The valid options.
|
|
44
|
-
#
|
|
45
|
-
# @since 7.0
|
|
46
40
|
VALID_OPTIONS = (ASSOCIATION_OPTIONS + SHARED_OPTIONS).freeze
|
|
47
41
|
|
|
48
42
|
# The type of the field holding the foreign key.
|
|
49
43
|
#
|
|
50
44
|
# @return [ Object ]
|
|
51
|
-
#
|
|
52
|
-
# @since 7.0
|
|
53
45
|
FOREIGN_KEY_FIELD_TYPE = Object
|
|
54
46
|
|
|
55
47
|
# The default foreign key suffix.
|
|
56
48
|
#
|
|
57
49
|
# @return [ String ] '_id'
|
|
58
|
-
#
|
|
59
|
-
# @since 7.0
|
|
60
50
|
FOREIGN_KEY_SUFFIX = '_id'.freeze
|
|
61
51
|
|
|
62
52
|
# The list of association complements.
|
|
63
53
|
#
|
|
64
54
|
# @return [ Array<Association> ] The association complements.
|
|
65
|
-
#
|
|
66
|
-
# @since 7.0
|
|
67
55
|
def relation_complements
|
|
68
56
|
@relation_complements ||= [ HasMany, HasOne ].freeze
|
|
69
57
|
end
|
|
@@ -71,8 +59,6 @@ module Mongoid
|
|
|
71
59
|
# Setup the instance methods, fields, etc. on the association owning class.
|
|
72
60
|
#
|
|
73
61
|
# @return [ self ]
|
|
74
|
-
#
|
|
75
|
-
# @since 7.0
|
|
76
62
|
def setup!
|
|
77
63
|
setup_instance_methods!
|
|
78
64
|
@owner_class.aliased_fields[name.to_s] = foreign_key
|
|
@@ -82,29 +68,21 @@ module Mongoid
|
|
|
82
68
|
# Does this association type store the foreign key?
|
|
83
69
|
#
|
|
84
70
|
# @return [ true ] Always true.
|
|
85
|
-
#
|
|
86
|
-
# @since 7.0
|
|
87
71
|
def stores_foreign_key?; true; end
|
|
88
72
|
|
|
89
73
|
# Is this association type embedded?
|
|
90
74
|
#
|
|
91
75
|
# @return [ false ] Always false.
|
|
92
|
-
#
|
|
93
|
-
# @since 7.0
|
|
94
76
|
def embedded?; false; end
|
|
95
77
|
|
|
96
78
|
# The default for validation the association object.
|
|
97
79
|
#
|
|
98
80
|
# @return [ false ] Always false.
|
|
99
|
-
#
|
|
100
|
-
# @since 7.0
|
|
101
81
|
def validation_default; false; end
|
|
102
82
|
|
|
103
83
|
# Get the foreign key field for saving the association reference.
|
|
104
84
|
#
|
|
105
85
|
# @return [ String ] The foreign key field for saving the association reference.
|
|
106
|
-
#
|
|
107
|
-
# @since 7.0
|
|
108
86
|
def foreign_key
|
|
109
87
|
@foreign_key ||= @options[:foreign_key] ? @options[:foreign_key].to_s :
|
|
110
88
|
default_foreign_key_field
|
|
@@ -113,8 +91,6 @@ module Mongoid
|
|
|
113
91
|
# Get the association proxy class for this association type.
|
|
114
92
|
#
|
|
115
93
|
# @return [ Association::BelongsTo::Proxy ] The proxy class.
|
|
116
|
-
#
|
|
117
|
-
# @since 7.0
|
|
118
94
|
def relation
|
|
119
95
|
Proxy
|
|
120
96
|
end
|
|
@@ -122,8 +98,6 @@ module Mongoid
|
|
|
122
98
|
# Is this association polymorphic?
|
|
123
99
|
#
|
|
124
100
|
# @return [ true, false ] Whether this association is polymorphic.
|
|
125
|
-
#
|
|
126
|
-
# @since 7.0
|
|
127
101
|
def polymorphic?
|
|
128
102
|
@polymorphic ||= !!@options[:polymorphic]
|
|
129
103
|
end
|
|
@@ -131,8 +105,6 @@ module Mongoid
|
|
|
131
105
|
# The name of the field used to store the type of polymorphic association.
|
|
132
106
|
#
|
|
133
107
|
# @return [ String ] The field used to store the type of polymorphic association.
|
|
134
|
-
#
|
|
135
|
-
# @since 7.0
|
|
136
108
|
def inverse_type
|
|
137
109
|
(@inverse_type ||= "#{name}_type") if polymorphic?
|
|
138
110
|
end
|
|
@@ -143,8 +115,6 @@ module Mongoid
|
|
|
143
115
|
# @param [ Hash ] options The options for the association.
|
|
144
116
|
#
|
|
145
117
|
# @return [ Association::Nested::One ] The Nested Builder object.
|
|
146
|
-
#
|
|
147
|
-
# @since 7.0
|
|
148
118
|
def nested_builder(attributes, options)
|
|
149
119
|
Nested::One.new(self, attributes, options)
|
|
150
120
|
end
|
|
@@ -157,12 +127,17 @@ module Mongoid
|
|
|
157
127
|
# @param [ Document ] document The document to calculate on.
|
|
158
128
|
#
|
|
159
129
|
# @return [ Root ] The root atomic path calculator.
|
|
160
|
-
#
|
|
161
|
-
# @since 2.1.0
|
|
162
130
|
def path(document)
|
|
163
131
|
Mongoid::Atomic::Paths::Root.new(document)
|
|
164
132
|
end
|
|
165
133
|
|
|
134
|
+
# Get the scope to be applied when querying the association.
|
|
135
|
+
#
|
|
136
|
+
# @return [ Proc | Symbol | nil ] The association scope, if any.
|
|
137
|
+
def scope
|
|
138
|
+
@options[:scope]
|
|
139
|
+
end
|
|
140
|
+
|
|
166
141
|
private
|
|
167
142
|
|
|
168
143
|
def setup_instance_methods!
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Association
|
|
@@ -8,15 +7,13 @@ module Mongoid
|
|
|
8
7
|
extend ActiveSupport::Concern
|
|
9
8
|
|
|
10
9
|
# Reset the given counter using the .count() query from the
|
|
11
|
-
# db. This method is
|
|
10
|
+
# db. This method is useful in case that a counter got
|
|
12
11
|
# corrupted, or a new counter was added to the collection.
|
|
13
12
|
#
|
|
14
13
|
# @example Reset the given counter cache
|
|
15
14
|
# post.reset_counters(:comments)
|
|
16
15
|
#
|
|
17
16
|
# @param [ Symbol, Array ] counters One or more counter caches to reset
|
|
18
|
-
#
|
|
19
|
-
# @since 4.0.0
|
|
20
17
|
def reset_counters(*counters)
|
|
21
18
|
self.class.with(persistence_context) do |_class|
|
|
22
19
|
_class.reset_counters(self, *counters)
|
|
@@ -26,7 +23,7 @@ module Mongoid
|
|
|
26
23
|
module ClassMethods
|
|
27
24
|
|
|
28
25
|
# Reset the given counter using the .count() query from the
|
|
29
|
-
# db. This method is
|
|
26
|
+
# db. This method is useful in case that a counter got
|
|
30
27
|
# corrupted, or a new counter was added to the collection.
|
|
31
28
|
#
|
|
32
29
|
# @example Reset the given counter cache
|
|
@@ -34,8 +31,6 @@ module Mongoid
|
|
|
34
31
|
#
|
|
35
32
|
# @param [ String ] id The id of the object that will be reset.
|
|
36
33
|
# @param [ Symbol, Array ] counters One or more counter caches to reset
|
|
37
|
-
#
|
|
38
|
-
# @since 3.1.0
|
|
39
34
|
def reset_counters(id, *counters)
|
|
40
35
|
document = id.is_a?(Document) ? id : find(id)
|
|
41
36
|
counters.each do |name|
|
|
@@ -55,8 +50,6 @@ module Mongoid
|
|
|
55
50
|
#
|
|
56
51
|
# @param [ String ] id The id of the object to update.
|
|
57
52
|
# @param [ Hash ] counters
|
|
58
|
-
#
|
|
59
|
-
# @since 3.1.0
|
|
60
53
|
def update_counters(id, counters)
|
|
61
54
|
where(:_id => id).inc(counters)
|
|
62
55
|
end
|
|
@@ -70,8 +63,6 @@ module Mongoid
|
|
|
70
63
|
#
|
|
71
64
|
# @param [ Symbol ] counter_name Counter cache name
|
|
72
65
|
# @param [ String ] id The id of the object that will have its counter incremented.
|
|
73
|
-
#
|
|
74
|
-
# @since 3.1.0
|
|
75
66
|
def increment_counter(counter_name, id)
|
|
76
67
|
update_counters(id, counter_name.to_sym => 1)
|
|
77
68
|
end
|
|
@@ -85,8 +76,6 @@ module Mongoid
|
|
|
85
76
|
#
|
|
86
77
|
# @param [ Symbol ] counter_name Counter cache name
|
|
87
78
|
# @param [ String ] id The id of the object that will have its counter decremented.
|
|
88
|
-
#
|
|
89
|
-
# @since 3.1.0
|
|
90
79
|
def decrement_counter(counter_name, id)
|
|
91
80
|
update_counters(id, counter_name.to_sym => -1)
|
|
92
81
|
end
|
|
@@ -102,8 +91,6 @@ module Mongoid
|
|
|
102
91
|
# @param [ Association ] association The association.
|
|
103
92
|
#
|
|
104
93
|
# @return [ Class ] The association's owning class.
|
|
105
|
-
#
|
|
106
|
-
# @since 7.0
|
|
107
94
|
def self.define_callbacks!(association)
|
|
108
95
|
name = association.name
|
|
109
96
|
cache_column = association.counter_cache_column_name.to_sym
|
|
@@ -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
|
module Eager
|
|
8
7
|
|
|
9
8
|
# Base class for eager load preload functions.
|
|
10
|
-
#
|
|
11
|
-
# @since 4.0.0
|
|
12
9
|
class Base
|
|
13
10
|
|
|
14
11
|
# Instantiate the eager load class.
|
|
@@ -20,8 +17,6 @@ module Mongoid
|
|
|
20
17
|
# @param [ Array<Document> ] docs Documents to preload the associations
|
|
21
18
|
#
|
|
22
19
|
# @return [ Base ] The eager load preloader
|
|
23
|
-
#
|
|
24
|
-
# @since 4.0.0
|
|
25
20
|
def initialize(associations, docs)
|
|
26
21
|
@associations = associations
|
|
27
22
|
@docs = docs
|
|
@@ -34,8 +29,6 @@ module Mongoid
|
|
|
34
29
|
# loader.run
|
|
35
30
|
#
|
|
36
31
|
# @return [ Array ] The list of documents given.
|
|
37
|
-
#
|
|
38
|
-
# @since 4.0.0
|
|
39
32
|
def run
|
|
40
33
|
@loaded = []
|
|
41
34
|
while shift_association
|
|
@@ -53,8 +46,6 @@ module Mongoid
|
|
|
53
46
|
#
|
|
54
47
|
# @example Preload the current association into the documents.
|
|
55
48
|
# loader.preload
|
|
56
|
-
#
|
|
57
|
-
# @since 4.0.0
|
|
58
49
|
def preload
|
|
59
50
|
raise NotImplementedError
|
|
60
51
|
end
|
|
@@ -64,8 +55,6 @@ module Mongoid
|
|
|
64
55
|
# association is not polymorphic, all documents are retrieved in
|
|
65
56
|
# a single query. If the association is polymorphic, one query is
|
|
66
57
|
# issued per association target class.
|
|
67
|
-
#
|
|
68
|
-
# @since 4.0.0
|
|
69
58
|
def each_loaded_document(&block)
|
|
70
59
|
each_loaded_document_of_class(@association.klass, keys_from_docs, &block)
|
|
71
60
|
end
|
|
@@ -81,7 +70,9 @@ module Mongoid
|
|
|
81
70
|
# Upstream code is responsible for eliminating nils from keys.
|
|
82
71
|
return cls.none if keys.empty?
|
|
83
72
|
|
|
84
|
-
criteria = cls.
|
|
73
|
+
criteria = cls.criteria
|
|
74
|
+
criteria = criteria.apply_scope(@association.scope)
|
|
75
|
+
criteria = criteria.any_in(key => keys)
|
|
85
76
|
criteria.inclusions = criteria.inclusions - [@association]
|
|
86
77
|
criteria.each do |doc|
|
|
87
78
|
yield doc
|
|
@@ -95,8 +86,6 @@ module Mongoid
|
|
|
95
86
|
#
|
|
96
87
|
# @param [ ObjectId ] id parent`s id
|
|
97
88
|
# @param [ Document, Array ] element to push into the parent
|
|
98
|
-
#
|
|
99
|
-
# @since 4.0.0
|
|
100
89
|
def set_on_parent(id, element)
|
|
101
90
|
grouped_docs[id].each do |d|
|
|
102
91
|
set_relation(d, element)
|
|
@@ -112,8 +101,6 @@ module Mongoid
|
|
|
112
101
|
# loader.grouped_docs
|
|
113
102
|
#
|
|
114
103
|
# @return [ Hash ] hash with grouped documents.
|
|
115
|
-
#
|
|
116
|
-
# @since 4.0.0
|
|
117
104
|
def grouped_docs
|
|
118
105
|
@grouped_docs[@association.name] ||= @docs.group_by do |doc|
|
|
119
106
|
doc.send(group_by_key) if doc.respond_to?(group_by_key)
|
|
@@ -131,8 +118,6 @@ module Mongoid
|
|
|
131
118
|
# loader.keys_from_docs
|
|
132
119
|
#
|
|
133
120
|
# @return [ Array ] keys, ids
|
|
134
|
-
#
|
|
135
|
-
# @since 4.0.0
|
|
136
121
|
def keys_from_docs
|
|
137
122
|
grouped_docs.keys
|
|
138
123
|
end
|
|
@@ -145,8 +130,6 @@ module Mongoid
|
|
|
145
130
|
# loader.group_by_key
|
|
146
131
|
#
|
|
147
132
|
# @return [ Symbol ] Key to group by the current documents.
|
|
148
|
-
#
|
|
149
|
-
# @since 4.0.0
|
|
150
133
|
def group_by_key
|
|
151
134
|
raise NotImplementedError
|
|
152
135
|
end
|
|
@@ -158,8 +141,6 @@ module Mongoid
|
|
|
158
141
|
#
|
|
159
142
|
# @param [ Document ] doc The object to set the association on
|
|
160
143
|
# @param [ Document, Array ] element to set into the parent
|
|
161
|
-
#
|
|
162
|
-
# @since 4.0.0
|
|
163
144
|
def set_relation(doc, element)
|
|
164
145
|
doc.set_relation(@association.name, element) unless doc.blank?
|
|
165
146
|
end
|
|
@@ -172,8 +153,6 @@ module Mongoid
|
|
|
172
153
|
# loader.shift_association
|
|
173
154
|
#
|
|
174
155
|
# @return [ Association ] The association object.
|
|
175
|
-
#
|
|
176
|
-
# @since 4.0.0
|
|
177
156
|
def shift_association
|
|
178
157
|
@association = @associations.shift
|
|
179
158
|
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
|
|
@@ -17,8 +16,6 @@ module Mongoid
|
|
|
17
16
|
# person.preferences.bind_one(preference)
|
|
18
17
|
#
|
|
19
18
|
# @param [ Document ] doc The single document to bind.
|
|
20
|
-
#
|
|
21
|
-
# @since 2.0.0.rc.1
|
|
22
19
|
def bind_one(doc)
|
|
23
20
|
binding do
|
|
24
21
|
inverse_keys = doc.you_must(_association.inverse_foreign_key)
|
|
@@ -38,8 +35,6 @@ module Mongoid
|
|
|
38
35
|
#
|
|
39
36
|
# @example Unbind the document.
|
|
40
37
|
# person.preferences.unbind_one(document)
|
|
41
|
-
#
|
|
42
|
-
# @since 2.0.0.rc.1
|
|
43
38
|
def unbind_one(doc)
|
|
44
39
|
binding do
|
|
45
40
|
_base.send(_association.foreign_key).delete_one(record_id(doc))
|
|
@@ -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 HasAndBelongsToMany
|
|
8
7
|
|
|
9
8
|
# The Builder behavior for has_and_belongs_to_many associations.
|
|
10
|
-
#
|
|
11
|
-
# @since 7.0
|
|
12
9
|
module Buildable
|
|
13
10
|
|
|
14
11
|
# This builder either takes a hash and queries for the
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Association
|
|
@@ -25,14 +24,12 @@ module Mongoid
|
|
|
25
24
|
# @param [ Document, Array<Document> ] args Any number of documents.
|
|
26
25
|
#
|
|
27
26
|
# @return [ Array<Document> ] The loaded docs.
|
|
28
|
-
#
|
|
29
|
-
# @since 2.0.0.beta.1
|
|
30
27
|
def <<(*args)
|
|
31
28
|
docs = args.flatten
|
|
32
29
|
return concat(docs) if docs.size > 1
|
|
33
30
|
if doc = docs.first
|
|
34
31
|
append(doc)
|
|
35
|
-
_base.add_to_set(foreign_key => doc.
|
|
32
|
+
_base.add_to_set(foreign_key => doc.public_send(_association.primary_key))
|
|
36
33
|
if child_persistable?(doc)
|
|
37
34
|
doc.save
|
|
38
35
|
end
|
|
@@ -51,20 +48,18 @@ module Mongoid
|
|
|
51
48
|
# @param [ Array<Document> ] documents The docs to add.
|
|
52
49
|
#
|
|
53
50
|
# @return [ Array<Document> ] The documents.
|
|
54
|
-
#
|
|
55
|
-
# @since 2.4.0
|
|
56
51
|
def concat(documents)
|
|
57
52
|
ids, docs, inserts = {}, [], []
|
|
58
53
|
documents.each do |doc|
|
|
59
54
|
next unless doc
|
|
60
55
|
append(doc)
|
|
61
56
|
if persistable? || _creating?
|
|
62
|
-
ids[doc.
|
|
57
|
+
ids[doc.public_send(_association.primary_key)] = true
|
|
63
58
|
save_or_delay(doc, docs, inserts)
|
|
64
59
|
else
|
|
65
|
-
existing = _base.
|
|
66
|
-
unless existing.include?(doc.
|
|
67
|
-
existing.push(doc.
|
|
60
|
+
existing = _base.public_send(foreign_key)
|
|
61
|
+
unless existing.include?(doc.public_send(_association.primary_key))
|
|
62
|
+
existing.push(doc.public_send(_association.primary_key)) and unsynced(_base, foreign_key)
|
|
68
63
|
end
|
|
69
64
|
end
|
|
70
65
|
end
|
|
@@ -85,11 +80,9 @@ module Mongoid
|
|
|
85
80
|
# @param [ Class ] type The optional subclass to build.
|
|
86
81
|
#
|
|
87
82
|
# @return [ Document ] The new document.
|
|
88
|
-
#
|
|
89
|
-
# @since 2.0.0.beta.1
|
|
90
83
|
def build(attributes = {}, type = nil)
|
|
91
84
|
doc = Factory.build(type || klass, attributes)
|
|
92
|
-
_base.
|
|
85
|
+
_base.public_send(foreign_key).push(doc.public_send(_association.primary_key))
|
|
93
86
|
append(doc)
|
|
94
87
|
doc.apply_post_processed_defaults
|
|
95
88
|
unsynced(doc, inverse_foreign_key)
|
|
@@ -109,12 +102,10 @@ module Mongoid
|
|
|
109
102
|
# @param [ Document ] document The document to remove.
|
|
110
103
|
#
|
|
111
104
|
# @return [ Document ] The matching document.
|
|
112
|
-
#
|
|
113
|
-
# @since 2.1.0
|
|
114
105
|
def delete(document)
|
|
115
106
|
doc = super
|
|
116
107
|
if doc && persistable?
|
|
117
|
-
_base.pull(foreign_key => doc.
|
|
108
|
+
_base.pull(foreign_key => doc.public_send(_association.primary_key))
|
|
118
109
|
_target._unloaded = criteria
|
|
119
110
|
unsynced(_base, foreign_key)
|
|
120
111
|
end
|
|
@@ -129,21 +120,19 @@ module Mongoid
|
|
|
129
120
|
# person.preferences.nullify
|
|
130
121
|
#
|
|
131
122
|
# @param [ Array<Document> ] replacement The replacement documents.
|
|
132
|
-
#
|
|
133
|
-
# @since 2.0.0.rc.1
|
|
134
123
|
def nullify(replacement = [])
|
|
135
124
|
_target.each do |doc|
|
|
136
125
|
execute_callback :before_remove, doc
|
|
137
126
|
end
|
|
138
127
|
unless _association.forced_nil_inverse?
|
|
139
128
|
if field = _association.options[:inverse_primary_key]
|
|
140
|
-
ipk = _base.
|
|
129
|
+
ipk = _base.public_send(field)
|
|
141
130
|
else
|
|
142
131
|
ipk = _base._id
|
|
143
132
|
end
|
|
144
133
|
if replacement
|
|
145
|
-
objects_to_clear = _base.
|
|
146
|
-
object.
|
|
134
|
+
objects_to_clear = _base.public_send(foreign_key) - replacement.collect do |object|
|
|
135
|
+
object.public_send(_association.primary_key)
|
|
147
136
|
end
|
|
148
137
|
criteria(objects_to_clear).pull(inverse_foreign_key => ipk)
|
|
149
138
|
else
|
|
@@ -151,7 +140,7 @@ module Mongoid
|
|
|
151
140
|
end
|
|
152
141
|
end
|
|
153
142
|
if persistable?
|
|
154
|
-
_base.set(foreign_key => _base.
|
|
143
|
+
_base.set(foreign_key => _base.public_send(foreign_key).clear)
|
|
155
144
|
end
|
|
156
145
|
after_remove_error = nil
|
|
157
146
|
many_to_many = _target.clear do |doc|
|
|
@@ -183,8 +172,6 @@ module Mongoid
|
|
|
183
172
|
# @param [ Array<Document> ] replacement The replacement target.
|
|
184
173
|
#
|
|
185
174
|
# @return [ Many ] The association.
|
|
186
|
-
#
|
|
187
|
-
# @since 2.0.0.rc.1
|
|
188
175
|
def substitute(replacement)
|
|
189
176
|
purge(replacement)
|
|
190
177
|
unless replacement.blank?
|
|
@@ -202,10 +189,8 @@ module Mongoid
|
|
|
202
189
|
# person.preferences.unscoped
|
|
203
190
|
#
|
|
204
191
|
# @return [ Criteria ] The unscoped criteria.
|
|
205
|
-
#
|
|
206
|
-
# @since 2.4.0
|
|
207
192
|
def unscoped
|
|
208
|
-
klass.unscoped.any_in(_id: _base.
|
|
193
|
+
klass.unscoped.any_in(_id: _base.public_send(foreign_key))
|
|
209
194
|
end
|
|
210
195
|
|
|
211
196
|
private
|
|
@@ -217,8 +202,6 @@ module Mongoid
|
|
|
217
202
|
# relation.append(document)
|
|
218
203
|
#
|
|
219
204
|
# @param [ Document ] document The document to append to the target.
|
|
220
|
-
#
|
|
221
|
-
# @since 2.0.0.rc.1
|
|
222
205
|
def append(document)
|
|
223
206
|
execute_callback :before_add, document
|
|
224
207
|
_target.push(document)
|
|
@@ -233,8 +216,6 @@ module Mongoid
|
|
|
233
216
|
# relation.binding([ address ])
|
|
234
217
|
#
|
|
235
218
|
# @return [ Binding ] The binding.
|
|
236
|
-
#
|
|
237
|
-
# @since 2.0.0.rc.1
|
|
238
219
|
def binding
|
|
239
220
|
HasAndBelongsToMany::Binding.new(_base, _target, _association)
|
|
240
221
|
end
|
|
@@ -249,8 +230,6 @@ module Mongoid
|
|
|
249
230
|
# @param [ Document ] doc The document.
|
|
250
231
|
#
|
|
251
232
|
# @return [ true, false ] If the document can be persisted.
|
|
252
|
-
#
|
|
253
|
-
# @since 3.0.20
|
|
254
233
|
def child_persistable?(doc)
|
|
255
234
|
(persistable? || _creating?) &&
|
|
256
235
|
!(doc.persisted? && _association.forced_nil_inverse?)
|
|
@@ -278,8 +257,6 @@ module Mongoid
|
|
|
278
257
|
# @param [ Symbol ] key The key to flag on the document.
|
|
279
258
|
#
|
|
280
259
|
# @return [ true ] true.
|
|
281
|
-
#
|
|
282
|
-
# @since 3.0.0
|
|
283
260
|
def unsynced(doc, key)
|
|
284
261
|
doc._synced[key] = false
|
|
285
262
|
true
|
|
@@ -293,8 +270,6 @@ module Mongoid
|
|
|
293
270
|
#
|
|
294
271
|
# @param [ Association ] association The association object.
|
|
295
272
|
# @param [ Array<Document> ] docs The array of documents.
|
|
296
|
-
#
|
|
297
|
-
# @since 7.0
|
|
298
273
|
def eager_loader(association, docs)
|
|
299
274
|
Eager.new(association, docs)
|
|
300
275
|
end
|
|
@@ -306,8 +281,6 @@ module Mongoid
|
|
|
306
281
|
# Referenced::ManyToMany.embedded?
|
|
307
282
|
#
|
|
308
283
|
# @return [ false ] Always false.
|
|
309
|
-
#
|
|
310
|
-
# @since 2.0.0.rc.1
|
|
311
284
|
def embedded?
|
|
312
285
|
false
|
|
313
286
|
end
|