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
|
|
@@ -29,8 +28,6 @@ module Mongoid
|
|
|
29
28
|
# @param [ Document, Array<Document> ] args Any number of documents.
|
|
30
29
|
#
|
|
31
30
|
# @return [ Array<Document> ] The loaded docs.
|
|
32
|
-
#
|
|
33
|
-
# @since 2.0.0.beta.1
|
|
34
31
|
def <<(*args)
|
|
35
32
|
docs = args.flatten
|
|
36
33
|
return concat(docs) if docs.size > 1
|
|
@@ -52,8 +49,6 @@ module Mongoid
|
|
|
52
49
|
# @param [ Array<Document> ] documents The docs to add.
|
|
53
50
|
#
|
|
54
51
|
# @return [ Array<Document> ] The documents.
|
|
55
|
-
#
|
|
56
|
-
# @since 2.4.0
|
|
57
52
|
def concat(documents)
|
|
58
53
|
docs, inserts = [], []
|
|
59
54
|
documents.each do |doc|
|
|
@@ -75,8 +70,6 @@ module Mongoid
|
|
|
75
70
|
# @param [ Class ] type The optional subclass to build.
|
|
76
71
|
#
|
|
77
72
|
# @return [ Document ] The new document.
|
|
78
|
-
#
|
|
79
|
-
# @since 2.0.0.beta.1
|
|
80
73
|
def build(attributes = {}, type = nil)
|
|
81
74
|
doc = Factory.build(type || klass, attributes)
|
|
82
75
|
append(doc)
|
|
@@ -98,8 +91,6 @@ module Mongoid
|
|
|
98
91
|
# @param [ Document ] document The document to remove.
|
|
99
92
|
#
|
|
100
93
|
# @return [ Document ] The matching document.
|
|
101
|
-
#
|
|
102
|
-
# @since 2.1.0
|
|
103
94
|
def delete(document)
|
|
104
95
|
execute_callback :before_remove, document
|
|
105
96
|
_target.delete(document) do |doc|
|
|
@@ -123,8 +114,6 @@ module Mongoid
|
|
|
123
114
|
# @param [ Hash ] conditions Optional conditions to delete with.
|
|
124
115
|
#
|
|
125
116
|
# @return [ Integer ] The number of documents deleted.
|
|
126
|
-
#
|
|
127
|
-
# @since 2.0.0.beta.1
|
|
128
117
|
def delete_all(conditions = nil)
|
|
129
118
|
remove_all(conditions, :delete_all)
|
|
130
119
|
end
|
|
@@ -135,14 +124,12 @@ module Mongoid
|
|
|
135
124
|
# @example Destroy all documents in the association.
|
|
136
125
|
# person.posts.destroy_all
|
|
137
126
|
#
|
|
138
|
-
# @example
|
|
127
|
+
# @example Conditionally destroy all documents in the association.
|
|
139
128
|
# person.posts.destroy_all({ :title => "Testing" })
|
|
140
129
|
#
|
|
141
130
|
# @param [ Hash ] conditions Optional conditions to destroy with.
|
|
142
131
|
#
|
|
143
|
-
# @return [ Integer ] The number of documents
|
|
144
|
-
#
|
|
145
|
-
# @since 2.0.0.beta.1
|
|
132
|
+
# @return [ Integer ] The number of documents destroyed.
|
|
146
133
|
def destroy_all(conditions = nil)
|
|
147
134
|
remove_all(conditions, :destroy_all)
|
|
148
135
|
end
|
|
@@ -158,8 +145,6 @@ module Mongoid
|
|
|
158
145
|
# end
|
|
159
146
|
#
|
|
160
147
|
# @return [ Array<Document> ] The loaded docs.
|
|
161
|
-
#
|
|
162
|
-
# @since 2.1.0
|
|
163
148
|
def each
|
|
164
149
|
if block_given?
|
|
165
150
|
_target.each { |doc| yield(doc) }
|
|
@@ -185,25 +170,35 @@ module Mongoid
|
|
|
185
170
|
criteria.exists?
|
|
186
171
|
end
|
|
187
172
|
|
|
188
|
-
# Find the
|
|
173
|
+
# Find the matching document on the association, either based on id or
|
|
189
174
|
# conditions.
|
|
190
175
|
#
|
|
176
|
+
# This method delegates to +Mongoid::Criteria#find+. If this method is
|
|
177
|
+
# not given a block, it returns one or many documents for the provided
|
|
178
|
+
# _id values.
|
|
179
|
+
#
|
|
180
|
+
# If this method is given a block, it returns the first document
|
|
181
|
+
# of those found by the current Criteria object for which the block
|
|
182
|
+
# returns a truthy value.
|
|
183
|
+
#
|
|
191
184
|
# @example Find by an id.
|
|
192
185
|
# person.posts.find(BSON::ObjectId.new)
|
|
193
186
|
#
|
|
194
187
|
# @example Find by multiple ids.
|
|
195
188
|
# person.posts.find([ BSON::ObjectId.new, BSON::ObjectId.new ])
|
|
196
189
|
#
|
|
190
|
+
# @example Finds the first matching document using a block.
|
|
191
|
+
# person.addresses.find { |addr| addr.state == 'CA' }
|
|
192
|
+
#
|
|
197
193
|
# @note This will keep matching documents in memory for iteration
|
|
198
194
|
# later.
|
|
199
195
|
#
|
|
200
196
|
# @param [ BSON::ObjectId, Array<BSON::ObjectId> ] args The ids.
|
|
197
|
+
# @param [ Proc ] block Optional block to pass.
|
|
201
198
|
#
|
|
202
|
-
# @return [ Document
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
def find(*args)
|
|
206
|
-
matching = criteria.find(*args)
|
|
199
|
+
# @return [ Document | Array<Document> | nil ] A document or matching documents.
|
|
200
|
+
def find(*args, &block)
|
|
201
|
+
matching = criteria.find(*args, &block)
|
|
207
202
|
Array(matching).each { |doc| _target.push(doc) }
|
|
208
203
|
matching
|
|
209
204
|
end
|
|
@@ -217,8 +212,6 @@ module Mongoid
|
|
|
217
212
|
# @param [ Document ] base The document this association hangs off of.
|
|
218
213
|
# @param [ Array<Document> ] target The target of the association.
|
|
219
214
|
# @param [ Association ] association The association metadata.
|
|
220
|
-
#
|
|
221
|
-
# @since 2.0.0.beta.1
|
|
222
215
|
def initialize(base, target, association)
|
|
223
216
|
enum = HasMany::Enumerable.new(target, base, association)
|
|
224
217
|
init(base, enum, association) do
|
|
@@ -232,8 +225,6 @@ module Mongoid
|
|
|
232
225
|
#
|
|
233
226
|
# @example Nullify the association.
|
|
234
227
|
# person.posts.nullify
|
|
235
|
-
#
|
|
236
|
-
# @since 2.0.0.rc.1
|
|
237
228
|
def nullify
|
|
238
229
|
criteria.update_all(foreign_key => nil)
|
|
239
230
|
_target.clear do |doc|
|
|
@@ -251,8 +242,6 @@ module Mongoid
|
|
|
251
242
|
# person.posts.clear
|
|
252
243
|
#
|
|
253
244
|
# @return [ Many ] The association emptied.
|
|
254
|
-
#
|
|
255
|
-
# @since 2.0.0.beta.1
|
|
256
245
|
def purge
|
|
257
246
|
unless _association.destructive?
|
|
258
247
|
nullify
|
|
@@ -286,8 +275,6 @@ module Mongoid
|
|
|
286
275
|
# @param [ Array<Document> ] replacement The replacement target.
|
|
287
276
|
#
|
|
288
277
|
# @return [ Many ] The association.
|
|
289
|
-
#
|
|
290
|
-
# @since 2.0.0.rc.1
|
|
291
278
|
def substitute(replacement)
|
|
292
279
|
if replacement
|
|
293
280
|
new_docs, docs = replacement.compact, []
|
|
@@ -310,8 +297,6 @@ module Mongoid
|
|
|
310
297
|
# person.posts.unscoped
|
|
311
298
|
#
|
|
312
299
|
# @return [ Criteria ] The unscoped criteria.
|
|
313
|
-
#
|
|
314
|
-
# @since 2.4.0
|
|
315
300
|
def unscoped
|
|
316
301
|
klass.unscoped.where(foreign_key => _base.send(_association.primary_key))
|
|
317
302
|
end
|
|
@@ -325,8 +310,6 @@ module Mongoid
|
|
|
325
310
|
# relation.append(document)
|
|
326
311
|
#
|
|
327
312
|
# @param [ Document ] document The document to append to the target.
|
|
328
|
-
#
|
|
329
|
-
# @since 2.0.0.rc.1
|
|
330
313
|
def append(document)
|
|
331
314
|
with_add_callbacks(document, already_related?(document)) do
|
|
332
315
|
_target.push(document)
|
|
@@ -344,8 +327,6 @@ module Mongoid
|
|
|
344
327
|
# @param [ Document ] document The document to append to the target.
|
|
345
328
|
# @param [ true, false ] already_related Whether the document is already related
|
|
346
329
|
# to the target.
|
|
347
|
-
#
|
|
348
|
-
# @since 5.1.0
|
|
349
330
|
def with_add_callbacks(document, already_related)
|
|
350
331
|
execute_callback :before_add, document unless already_related
|
|
351
332
|
yield
|
|
@@ -361,8 +342,6 @@ module Mongoid
|
|
|
361
342
|
#
|
|
362
343
|
# @return [ true, false ] Whether the document is already related to the base and the
|
|
363
344
|
# association is persisted.
|
|
364
|
-
#
|
|
365
|
-
# @since 5.1.0
|
|
366
345
|
def already_related?(document)
|
|
367
346
|
document.persisted? &&
|
|
368
347
|
document._association &&
|
|
@@ -376,8 +355,6 @@ module Mongoid
|
|
|
376
355
|
# relation.binding([ address ])
|
|
377
356
|
#
|
|
378
357
|
# @return [ Binding ] The binding.
|
|
379
|
-
#
|
|
380
|
-
# @since 2.0.0.rc.1
|
|
381
358
|
def binding
|
|
382
359
|
HasMany::Binding.new(_base, _target, _association)
|
|
383
360
|
end
|
|
@@ -388,8 +365,6 @@ module Mongoid
|
|
|
388
365
|
# relation.collection
|
|
389
366
|
#
|
|
390
367
|
# @return [ Collection ] The collection of the association.
|
|
391
|
-
#
|
|
392
|
-
# @since 2.0.2
|
|
393
368
|
def collection
|
|
394
369
|
klass.collection
|
|
395
370
|
end
|
|
@@ -401,8 +376,6 @@ module Mongoid
|
|
|
401
376
|
# relation.criteria
|
|
402
377
|
#
|
|
403
378
|
# @return [ Criteria ] A new criteria.
|
|
404
|
-
#
|
|
405
|
-
# @since 2.0.0.beta.1
|
|
406
379
|
def criteria
|
|
407
380
|
@criteria ||= _association.criteria(_base)
|
|
408
381
|
end
|
|
@@ -416,8 +389,6 @@ module Mongoid
|
|
|
416
389
|
# @param [ Document ] document The document to cascade on.
|
|
417
390
|
#
|
|
418
391
|
# @return [ true, false ] If the association is destructive.
|
|
419
|
-
#
|
|
420
|
-
# @since 2.1.0
|
|
421
392
|
def cascade!(document)
|
|
422
393
|
if persistable?
|
|
423
394
|
case _association.dependent
|
|
@@ -441,8 +412,6 @@ module Mongoid
|
|
|
441
412
|
# @param [ Proc ] block Optional block to pass.
|
|
442
413
|
#
|
|
443
414
|
# @return [ Criteria, Object ] A Criteria or return value from the target.
|
|
444
|
-
#
|
|
445
|
-
# @since 2.0.0.beta.1
|
|
446
415
|
ruby2_keywords def method_missing(name, *args, &block)
|
|
447
416
|
if _target.respond_to?(name)
|
|
448
417
|
_target.send(name, *args, &block)
|
|
@@ -462,8 +431,6 @@ module Mongoid
|
|
|
462
431
|
#
|
|
463
432
|
# @param [ Array<Document> ] docs The delayed inserts.
|
|
464
433
|
# @param [ Array<Hash> ] inserts The raw insert document.
|
|
465
|
-
#
|
|
466
|
-
# @since 3.0.0
|
|
467
434
|
def persist_delayed(docs, inserts)
|
|
468
435
|
unless docs.empty?
|
|
469
436
|
collection.insert_many(inserts, session: _session)
|
|
@@ -481,8 +448,6 @@ module Mongoid
|
|
|
481
448
|
# relation.persistable?
|
|
482
449
|
#
|
|
483
450
|
# @return [ true, false ] If the association is persistable.
|
|
484
|
-
#
|
|
485
|
-
# @since 2.1.0
|
|
486
451
|
def persistable?
|
|
487
452
|
!_binding? && (_creating? || _base.persisted? && !_building?)
|
|
488
453
|
end
|
|
@@ -500,8 +465,6 @@ module Mongoid
|
|
|
500
465
|
# @param [ Symbol ] method The deletion method to call.
|
|
501
466
|
#
|
|
502
467
|
# @return [ Integer ] The number of documents deleted.
|
|
503
|
-
#
|
|
504
|
-
# @since 2.1.0
|
|
505
468
|
def remove_all(conditions = nil, method = :delete_all)
|
|
506
469
|
selector = conditions || {}
|
|
507
470
|
removed = klass.send(method, selector.merge!(criteria.selector))
|
|
@@ -520,8 +483,6 @@ module Mongoid
|
|
|
520
483
|
# proxy.remove_not_in([ id ])
|
|
521
484
|
#
|
|
522
485
|
# @param [ Array<Object> ] ids The ids.
|
|
523
|
-
#
|
|
524
|
-
# @since 2.4.0
|
|
525
486
|
def remove_not_in(ids)
|
|
526
487
|
removed = criteria.not_in(_id: ids)
|
|
527
488
|
if _association.destructive?
|
|
@@ -550,8 +511,6 @@ module Mongoid
|
|
|
550
511
|
#
|
|
551
512
|
# @param [ Document ] doc The document.
|
|
552
513
|
# @param [ Array<Document> ] inserts The inserts.
|
|
553
|
-
#
|
|
554
|
-
# @since 3.0.0
|
|
555
514
|
def save_or_delay(doc, docs, inserts)
|
|
556
515
|
if doc.new_record? && doc.valid?(:create)
|
|
557
516
|
doc.run_before_callbacks(:save, :create)
|
|
@@ -575,8 +534,6 @@ module Mongoid
|
|
|
575
534
|
# Referenced::Many.embedded?
|
|
576
535
|
#
|
|
577
536
|
# @return [ false ] Always false.
|
|
578
|
-
#
|
|
579
|
-
# @since 2.0.0.rc.1
|
|
580
537
|
def embedded?
|
|
581
538
|
false
|
|
582
539
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
require 'mongoid/association/referenced/has_many/binding'
|
|
5
4
|
require 'mongoid/association/referenced/has_many/buildable'
|
|
@@ -12,8 +11,6 @@ module Mongoid
|
|
|
12
11
|
module Referenced
|
|
13
12
|
|
|
14
13
|
# The has_many association.
|
|
15
|
-
#
|
|
16
|
-
# @since 7.0
|
|
17
14
|
class HasMany
|
|
18
15
|
include Relatable
|
|
19
16
|
include Buildable
|
|
@@ -22,8 +19,6 @@ module Mongoid
|
|
|
22
19
|
# common ones.
|
|
23
20
|
#
|
|
24
21
|
# @return [ Array<Symbol> ] The extra valid options.
|
|
25
|
-
#
|
|
26
|
-
# @since 7.0
|
|
27
22
|
ASSOCIATION_OPTIONS = [
|
|
28
23
|
:after_add,
|
|
29
24
|
:after_remove,
|
|
@@ -34,29 +29,24 @@ module Mongoid
|
|
|
34
29
|
:dependent,
|
|
35
30
|
:foreign_key,
|
|
36
31
|
:order,
|
|
37
|
-
:primary_key
|
|
32
|
+
:primary_key,
|
|
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 default foreign key suffix.
|
|
49
43
|
#
|
|
50
44
|
# @return [ String ] '_id'
|
|
51
|
-
#
|
|
52
|
-
# @since 7.0
|
|
53
45
|
FOREIGN_KEY_SUFFIX = '_id'.freeze
|
|
54
46
|
|
|
55
47
|
# The list of association complements.
|
|
56
48
|
#
|
|
57
49
|
# @return [ Array<Association> ] The association complements.
|
|
58
|
-
#
|
|
59
|
-
# @since 7.0
|
|
60
50
|
def relation_complements
|
|
61
51
|
@relation_complements ||= [ Referenced::BelongsTo ].freeze
|
|
62
52
|
end
|
|
@@ -64,8 +54,6 @@ module Mongoid
|
|
|
64
54
|
# Setup the instance methods, fields, etc. on the association owning class.
|
|
65
55
|
#
|
|
66
56
|
# @return [ self ]
|
|
67
|
-
#
|
|
68
|
-
# @since 7.0
|
|
69
57
|
def setup!
|
|
70
58
|
setup_instance_methods!
|
|
71
59
|
self
|
|
@@ -74,8 +62,6 @@ module Mongoid
|
|
|
74
62
|
# Setup the instance methods on the class having this association type.
|
|
75
63
|
#
|
|
76
64
|
# @return [ self ]
|
|
77
|
-
#
|
|
78
|
-
# @since 7.0
|
|
79
65
|
def setup_instance_methods!
|
|
80
66
|
define_getter!
|
|
81
67
|
define_ids_getter!
|
|
@@ -94,8 +80,6 @@ module Mongoid
|
|
|
94
80
|
#
|
|
95
81
|
# @return [ String ] The foreign key field on the inverse for saving the
|
|
96
82
|
# association reference.
|
|
97
|
-
#
|
|
98
|
-
# @since 7.0
|
|
99
83
|
def foreign_key
|
|
100
84
|
@foreign_key ||= @options[:foreign_key] ? @options[:foreign_key].to_s :
|
|
101
85
|
default_foreign_key_field
|
|
@@ -104,29 +88,21 @@ module Mongoid
|
|
|
104
88
|
# Is this association type embedded?
|
|
105
89
|
#
|
|
106
90
|
# @return [ false ] Always false.
|
|
107
|
-
#
|
|
108
|
-
# @since 7.0
|
|
109
91
|
def embedded?; false; end
|
|
110
92
|
|
|
111
93
|
# The default for validation the association object.
|
|
112
94
|
#
|
|
113
95
|
# @return [ true ] Always true.
|
|
114
|
-
#
|
|
115
|
-
# @since 7.0
|
|
116
96
|
def validation_default; true; end
|
|
117
97
|
|
|
118
98
|
# Does this association type store the foreign key?
|
|
119
99
|
#
|
|
120
100
|
# @return [ true ] Always true.
|
|
121
|
-
#
|
|
122
|
-
# @since 7.0
|
|
123
101
|
def stores_foreign_key?; false; end
|
|
124
102
|
|
|
125
103
|
# Get the association proxy class for this association type.
|
|
126
104
|
#
|
|
127
105
|
# @return [ Association::HasMany::Proxy ] The proxy class.
|
|
128
|
-
#
|
|
129
|
-
# @since 7.0
|
|
130
106
|
def relation
|
|
131
107
|
Proxy
|
|
132
108
|
end
|
|
@@ -134,8 +110,6 @@ module Mongoid
|
|
|
134
110
|
# The criteria used for querying this association.
|
|
135
111
|
#
|
|
136
112
|
# @return [ Mongoid::Criteria ] The criteria used for querying this association.
|
|
137
|
-
#
|
|
138
|
-
# @since 7.0
|
|
139
113
|
def criteria(base)
|
|
140
114
|
query_criteria(base.send(primary_key), base)
|
|
141
115
|
end
|
|
@@ -145,8 +119,6 @@ module Mongoid
|
|
|
145
119
|
# @note Only relevant for polymorphic associations.
|
|
146
120
|
#
|
|
147
121
|
# @return [ String, nil ] The type field.
|
|
148
|
-
#
|
|
149
|
-
# @since 7.0
|
|
150
122
|
def type
|
|
151
123
|
@type ||= "#{as}_type" if polymorphic?
|
|
152
124
|
end
|
|
@@ -158,8 +130,6 @@ module Mongoid
|
|
|
158
130
|
# @param [ Class ] object_class The object class.
|
|
159
131
|
#
|
|
160
132
|
# @return [ Mongoid::Criteria ] The criteria object.
|
|
161
|
-
#
|
|
162
|
-
# @since 7.0
|
|
163
133
|
def add_polymorphic_criterion(criteria, object_class)
|
|
164
134
|
if polymorphic?
|
|
165
135
|
criteria.where(type => object_class.name)
|
|
@@ -171,8 +141,6 @@ module Mongoid
|
|
|
171
141
|
# Is this association polymorphic?
|
|
172
142
|
#
|
|
173
143
|
# @return [ true, false ] Whether this association is polymorphic.
|
|
174
|
-
#
|
|
175
|
-
# @since 7.0
|
|
176
144
|
def polymorphic?
|
|
177
145
|
@polymorphic ||= !!as
|
|
178
146
|
end
|
|
@@ -193,8 +161,6 @@ module Mongoid
|
|
|
193
161
|
# @param [ Hash ] options The options for the association.
|
|
194
162
|
#
|
|
195
163
|
# @return [ Association::Nested::Many ] The Nested Builder object.
|
|
196
|
-
#
|
|
197
|
-
# @since 7.0
|
|
198
164
|
def nested_builder(attributes, options)
|
|
199
165
|
Nested::Many.new(self, attributes, options)
|
|
200
166
|
end
|
|
@@ -207,12 +173,17 @@ module Mongoid
|
|
|
207
173
|
# @param [ Document ] document The document to calculate on.
|
|
208
174
|
#
|
|
209
175
|
# @return [ Root ] The root atomic path calculator.
|
|
210
|
-
#
|
|
211
|
-
# @since 2.1.0
|
|
212
176
|
def path(document)
|
|
213
177
|
Mongoid::Atomic::Paths::Root.new(document)
|
|
214
178
|
end
|
|
215
179
|
|
|
180
|
+
# Get the scope to be applied when querying the association.
|
|
181
|
+
#
|
|
182
|
+
# @return [ Proc | Symbol | nil ] The association scope, if any.
|
|
183
|
+
def scope
|
|
184
|
+
@options[:scope]
|
|
185
|
+
end
|
|
186
|
+
|
|
216
187
|
private
|
|
217
188
|
|
|
218
189
|
def default_foreign_key_field
|
|
@@ -241,7 +212,9 @@ module Mongoid
|
|
|
241
212
|
end
|
|
242
213
|
|
|
243
214
|
def query_criteria(object, base)
|
|
244
|
-
crit = klass.
|
|
215
|
+
crit = klass.criteria
|
|
216
|
+
crit = crit.apply_scope(scope)
|
|
217
|
+
crit = crit.where(foreign_key => object)
|
|
245
218
|
crit = with_polymorphic_criterion(crit, base)
|
|
246
219
|
crit.association = self
|
|
247
220
|
crit.parent_document = base
|
|
@@ -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 HasOne
|
|
8
7
|
|
|
9
8
|
# Binding class for has_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.game.bind(:continue => true)
|
|
23
20
|
# person.game = Game.new
|
|
24
|
-
#
|
|
25
|
-
# @since 2.0.0.rc.1
|
|
26
21
|
def bind_one
|
|
27
22
|
binding do
|
|
28
23
|
bind_from_relational_parent(_target)
|
|
@@ -35,8 +30,6 @@ module Mongoid
|
|
|
35
30
|
# @example Unbind the document.
|
|
36
31
|
# person.game.unbind(:continue => true)
|
|
37
32
|
# person.game = nil
|
|
38
|
-
#
|
|
39
|
-
# @since 2.0.0.rc.1
|
|
40
33
|
def unbind_one
|
|
41
34
|
binding do
|
|
42
35
|
unbind_from_relational_parent(_target)
|
|
@@ -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 HasOne
|
|
8
7
|
|
|
9
8
|
# The Builder behavior for has_one associations.
|
|
10
|
-
#
|
|
11
|
-
# @since 7.0
|
|
12
9
|
module Buildable
|
|
13
10
|
|
|
14
11
|
# This method either takes an _id or an object and queries for the
|
|
@@ -49,7 +46,9 @@ module Mongoid
|
|
|
49
46
|
end
|
|
50
47
|
|
|
51
48
|
def query_criteria(object, base)
|
|
52
|
-
crit = klass.
|
|
49
|
+
crit = klass.criteria
|
|
50
|
+
crit = crit.apply_scope(scope)
|
|
51
|
+
crit = crit.where(foreign_key => object)
|
|
53
52
|
with_polymorphic_criterion(crit, base)
|
|
54
53
|
end
|
|
55
54
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
module Mongoid
|
|
5
4
|
module Association
|
|
@@ -22,8 +21,6 @@ module Mongoid
|
|
|
22
21
|
# @param [ Document ] parent The parent document.
|
|
23
22
|
#
|
|
24
23
|
# @return [ Document ] The built document.
|
|
25
|
-
#
|
|
26
|
-
# @since 2.0.0
|
|
27
24
|
def build(parent)
|
|
28
25
|
return if reject?(parent, attributes)
|
|
29
26
|
@existing = parent.send(association.name)
|
|
@@ -46,8 +43,6 @@ module Mongoid
|
|
|
46
43
|
# @param [ Association ] association The association metadata.
|
|
47
44
|
# @param [ Hash ] attributes The attributes hash to attempt to set.
|
|
48
45
|
# @param [ Hash ] options The options defined.
|
|
49
|
-
#
|
|
50
|
-
# @since 2.0.0
|
|
51
46
|
def initialize(association, attributes, options)
|
|
52
47
|
@attributes = attributes.with_indifferent_access
|
|
53
48
|
@association = association
|
|
@@ -66,8 +61,6 @@ module Mongoid
|
|
|
66
61
|
# one.acceptable_id?
|
|
67
62
|
#
|
|
68
63
|
# @return [ true, false ] If the id part of the logic will allow an update.
|
|
69
|
-
#
|
|
70
|
-
# @since 2.0.0
|
|
71
64
|
def acceptable_id?
|
|
72
65
|
id = convert_id(existing.class, attributes[:_id])
|
|
73
66
|
existing._id == id || id.nil? || (existing._id != id && update_only?)
|
|
@@ -79,8 +72,6 @@ module Mongoid
|
|
|
79
72
|
# one.delete?
|
|
80
73
|
#
|
|
81
74
|
# @return [ true, false ] If the association should be deleted.
|
|
82
|
-
#
|
|
83
|
-
# @since 2.0.0
|
|
84
75
|
def delete?
|
|
85
76
|
destroyable? && !attributes[:_id].nil?
|
|
86
77
|
end
|
|
@@ -92,8 +83,6 @@ module Mongoid
|
|
|
92
83
|
#
|
|
93
84
|
# @return [ true, false ] If the association can potentially be
|
|
94
85
|
# destroyed.
|
|
95
|
-
#
|
|
96
|
-
# @since 2.0.0
|
|
97
86
|
def destroyable?
|
|
98
87
|
[ 1, "1", true, "true" ].include?(destroy) && allow_destroy?
|
|
99
88
|
end
|
|
@@ -104,8 +93,6 @@ module Mongoid
|
|
|
104
93
|
# one.replace?
|
|
105
94
|
#
|
|
106
95
|
# @return [ true, false ] If the document should be replaced.
|
|
107
|
-
#
|
|
108
|
-
# @since 2.0.0
|
|
109
96
|
def replace?
|
|
110
97
|
!existing && !destroyable? && !attributes.blank?
|
|
111
98
|
end
|
|
@@ -116,8 +103,6 @@ module Mongoid
|
|
|
116
103
|
# one.update?
|
|
117
104
|
#
|
|
118
105
|
# @return [ true, false ] If the object should have its attributes updated.
|
|
119
|
-
#
|
|
120
|
-
# @since 2.0.0
|
|
121
106
|
def update?
|
|
122
107
|
existing && !destroyable? && acceptable_id?
|
|
123
108
|
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
|
|
@@ -34,8 +33,6 @@ module Mongoid
|
|
|
34
33
|
#
|
|
35
34
|
# @example Nullify the association.
|
|
36
35
|
# person.game.nullify
|
|
37
|
-
#
|
|
38
|
-
# @since 2.0.0.rc.1
|
|
39
36
|
def nullify
|
|
40
37
|
unbind_one
|
|
41
38
|
_target.save
|
|
@@ -51,8 +48,6 @@ module Mongoid
|
|
|
51
48
|
# @param [ Array<Document> ] replacement The replacement target.
|
|
52
49
|
#
|
|
53
50
|
# @return [ One ] The association.
|
|
54
|
-
#
|
|
55
|
-
# @since 2.0.0.rc.1
|
|
56
51
|
def substitute(replacement)
|
|
57
52
|
# If the same object currently associated is being assigned,
|
|
58
53
|
# rebind the association and save the target but do not destroy
|
|
@@ -88,8 +83,6 @@ module Mongoid
|
|
|
88
83
|
# relation.persistable?
|
|
89
84
|
#
|
|
90
85
|
# @return [ true, false ] If the association is persistable.
|
|
91
|
-
#
|
|
92
|
-
# @since 2.1.0
|
|
93
86
|
def persistable?
|
|
94
87
|
_base.persisted? && !_binding? && !_building?
|
|
95
88
|
end
|
|
@@ -107,8 +100,6 @@ module Mongoid
|
|
|
107
100
|
# Referenced::One.embedded?
|
|
108
101
|
#
|
|
109
102
|
# @return [ false ] Always false.
|
|
110
|
-
#
|
|
111
|
-
# @since 2.0.0.rc.1
|
|
112
103
|
def embedded?
|
|
113
104
|
false
|
|
114
105
|
end
|