mongoid 7.0.12 → 7.3.3
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 +13 -13
- data/README.md +32 -19
- data/Rakefile +49 -0
- data/lib/config/locales/en.yml +113 -55
- data/lib/mongoid/association/accessors.rb +143 -53
- data/lib/mongoid/association/bindable.rb +7 -5
- data/lib/mongoid/association/builders.rb +4 -3
- data/lib/mongoid/association/constrainable.rb +5 -3
- data/lib/mongoid/association/depending.rb +10 -12
- data/lib/mongoid/association/eager_loadable.rb +2 -0
- data/lib/mongoid/association/embedded/batchable.rb +5 -3
- data/lib/mongoid/association/embedded/cyclic.rb +8 -6
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +4 -1
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +8 -2
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +15 -12
- data/lib/mongoid/association/embedded/embedded_in.rb +7 -4
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +5 -2
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +9 -3
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +60 -50
- data/lib/mongoid/association/embedded/embeds_many.rb +7 -4
- data/lib/mongoid/association/embedded/embeds_one/binding.rb +5 -2
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +10 -4
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +17 -14
- data/lib/mongoid/association/embedded/embeds_one.rb +7 -4
- data/lib/mongoid/association/embedded.rb +3 -0
- data/lib/mongoid/association/macros.rb +38 -36
- data/lib/mongoid/association/many.rb +16 -13
- data/lib/mongoid/association/marshalable.rb +3 -1
- data/lib/mongoid/association/nested/many.rb +18 -16
- data/lib/mongoid/association/nested/nested_buildable.rb +6 -3
- data/lib/mongoid/association/nested/one.rb +15 -11
- data/lib/mongoid/association/nested.rb +4 -1
- data/lib/mongoid/association/one.rb +3 -1
- data/lib/mongoid/association/options.rb +9 -6
- data/lib/mongoid/association/proxy.rb +37 -15
- data/lib/mongoid/association/referenced/auto_save.rb +6 -3
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +4 -2
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +7 -4
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +40 -2
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +16 -14
- data/lib/mongoid/association/referenced/belongs_to.rb +6 -3
- data/lib/mongoid/association/referenced/counter_cache.rb +2 -0
- data/lib/mongoid/association/referenced/eager.rb +37 -15
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +12 -6
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +5 -2
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +2 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +26 -19
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +13 -6
- data/lib/mongoid/association/referenced/has_many/binding.rb +3 -1
- data/lib/mongoid/association/referenced/has_many/buildable.rb +5 -2
- data/lib/mongoid/association/referenced/has_many/eager.rb +2 -0
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +493 -457
- data/lib/mongoid/association/referenced/has_many/proxy.rb +57 -47
- data/lib/mongoid/association/referenced/has_many.rb +7 -4
- data/lib/mongoid/association/referenced/has_one/binding.rb +4 -2
- data/lib/mongoid/association/referenced/has_one/buildable.rb +17 -2
- data/lib/mongoid/association/referenced/has_one/eager.rb +2 -0
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +13 -11
- data/lib/mongoid/association/referenced/has_one/proxy.rb +23 -16
- data/lib/mongoid/association/referenced/has_one.rb +5 -2
- data/lib/mongoid/association/referenced/syncable.rb +7 -5
- data/lib/mongoid/association/referenced.rb +3 -0
- data/lib/mongoid/association/reflections.rb +7 -5
- data/lib/mongoid/association/relatable.rb +19 -14
- data/lib/mongoid/association.rb +9 -6
- data/lib/mongoid/atomic/modifiers.rb +25 -2
- data/lib/mongoid/atomic/paths/embedded/many.rb +4 -2
- data/lib/mongoid/atomic/paths/embedded/one.rb +4 -2
- data/lib/mongoid/atomic/paths/embedded.rb +2 -0
- data/lib/mongoid/atomic/paths/root.rb +4 -2
- data/lib/mongoid/atomic/paths.rb +2 -0
- data/lib/mongoid/atomic.rb +28 -2
- data/lib/mongoid/attributes/dynamic.rb +3 -1
- data/lib/mongoid/attributes/nested.rb +7 -5
- data/lib/mongoid/attributes/processing.rb +8 -6
- data/lib/mongoid/attributes/projector.rb +120 -0
- data/lib/mongoid/attributes/readonly.rb +3 -1
- data/lib/mongoid/attributes.rb +46 -27
- data/lib/mongoid/cacheable.rb +5 -3
- data/lib/mongoid/changeable.rb +3 -1
- data/lib/mongoid/clients/factory.rb +42 -10
- data/lib/mongoid/clients/options.rb +10 -8
- data/lib/mongoid/clients/sessions.rb +3 -0
- data/lib/mongoid/clients/storage_options.rb +7 -5
- data/lib/mongoid/clients/validators/storage.rb +2 -0
- data/lib/mongoid/clients/validators.rb +2 -0
- data/lib/mongoid/clients.rb +3 -1
- data/lib/mongoid/composable.rb +5 -2
- data/lib/mongoid/config/environment.rb +11 -1
- data/lib/mongoid/config/options.rb +20 -12
- data/lib/mongoid/config/validators/client.rb +2 -0
- data/lib/mongoid/config/validators/option.rb +2 -0
- data/lib/mongoid/config/validators.rb +2 -0
- data/lib/mongoid/config.rb +75 -12
- data/lib/mongoid/contextual/aggregable/memory.rb +3 -1
- data/lib/mongoid/contextual/aggregable/mongo.rb +13 -9
- data/lib/mongoid/contextual/atomic.rb +31 -8
- data/lib/mongoid/contextual/command.rb +2 -0
- data/lib/mongoid/contextual/geo_near.rb +5 -3
- data/lib/mongoid/contextual/map_reduce.rb +5 -2
- data/lib/mongoid/contextual/memory.rb +4 -2
- data/lib/mongoid/contextual/mongo.rb +29 -5
- data/lib/mongoid/contextual/none.rb +5 -0
- data/lib/mongoid/contextual/queryable.rb +2 -0
- data/lib/mongoid/contextual.rb +7 -4
- data/lib/mongoid/copyable.rb +11 -5
- data/lib/mongoid/criteria/findable.rb +12 -2
- data/lib/mongoid/criteria/includable.rb +8 -6
- data/lib/mongoid/criteria/inspectable.rb +2 -0
- data/lib/mongoid/criteria/marshalable.rb +2 -0
- data/lib/mongoid/criteria/modifiable.rb +2 -0
- data/lib/mongoid/criteria/options.rb +2 -0
- data/lib/mongoid/criteria/permission.rb +2 -0
- data/lib/mongoid/criteria/queryable/aggregable.rb +2 -0
- data/lib/mongoid/criteria/queryable/expandable.rb +69 -0
- data/lib/mongoid/criteria/queryable/extensions/array.rb +3 -1
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +3 -1
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +3 -1
- data/lib/mongoid/criteria/queryable/extensions/date.rb +3 -1
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +5 -6
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +3 -1
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +3 -1
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +3 -1
- data/lib/mongoid/criteria/queryable/extensions/object.rb +3 -1
- data/lib/mongoid/criteria/queryable/extensions/range.rb +3 -1
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +6 -4
- data/lib/mongoid/criteria/queryable/extensions/set.rb +3 -1
- data/lib/mongoid/criteria/queryable/extensions/string.rb +3 -1
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +3 -1
- data/lib/mongoid/criteria/queryable/extensions/time.rb +3 -1
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +3 -1
- data/lib/mongoid/criteria/queryable/extensions.rb +1 -3
- data/lib/mongoid/criteria/queryable/key.rb +35 -7
- data/lib/mongoid/criteria/queryable/macroable.rb +3 -1
- data/lib/mongoid/criteria/queryable/mergeable.rb +179 -11
- data/lib/mongoid/criteria/queryable/optional.rb +5 -3
- data/lib/mongoid/criteria/queryable/options.rb +2 -0
- data/lib/mongoid/criteria/queryable/pipeline.rb +5 -2
- data/lib/mongoid/criteria/queryable/selectable.rb +397 -98
- data/lib/mongoid/criteria/queryable/selector.rb +37 -8
- data/lib/mongoid/criteria/queryable/smash.rb +2 -0
- data/lib/mongoid/criteria/queryable/storable.rb +233 -0
- data/lib/mongoid/criteria/queryable.rb +7 -2
- data/lib/mongoid/criteria/scopable.rb +2 -0
- data/lib/mongoid/criteria.rb +79 -15
- data/lib/mongoid/document.rb +21 -20
- data/lib/mongoid/equality.rb +3 -2
- data/lib/mongoid/errors/ambiguous_relationship.rb +4 -2
- data/lib/mongoid/errors/callback.rb +2 -0
- data/lib/mongoid/errors/criteria_argument_required.rb +19 -0
- data/lib/mongoid/errors/delete_restriction.rb +10 -10
- data/lib/mongoid/errors/document_not_destroyed.rb +2 -0
- data/lib/mongoid/errors/document_not_found.rb +2 -0
- data/lib/mongoid/errors/eager_load.rb +6 -2
- data/lib/mongoid/errors/empty_config_file.rb +26 -0
- data/lib/mongoid/errors/in_memory_collation_not_supported.rb +2 -0
- data/lib/mongoid/errors/invalid_collection.rb +2 -0
- data/lib/mongoid/errors/invalid_config_file.rb +26 -0
- data/lib/mongoid/errors/invalid_config_option.rb +2 -0
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +2 -0
- data/lib/mongoid/errors/invalid_discriminator_key_target.rb +25 -0
- data/lib/mongoid/errors/invalid_elem_match_operator.rb +33 -0
- data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +26 -0
- data/lib/mongoid/errors/invalid_expression_operator.rb +28 -0
- data/lib/mongoid/errors/invalid_field.rb +2 -0
- data/lib/mongoid/errors/invalid_field_operator.rb +33 -0
- data/lib/mongoid/errors/invalid_field_option.rb +2 -0
- data/lib/mongoid/errors/invalid_find.rb +2 -0
- data/lib/mongoid/errors/invalid_includes.rb +2 -0
- data/lib/mongoid/errors/invalid_index.rb +2 -0
- data/lib/mongoid/errors/invalid_options.rb +4 -2
- data/lib/mongoid/errors/invalid_path.rb +2 -0
- data/lib/mongoid/errors/invalid_persistence_option.rb +2 -0
- data/lib/mongoid/errors/invalid_query.rb +41 -0
- data/lib/mongoid/errors/invalid_relation.rb +4 -2
- data/lib/mongoid/errors/invalid_relation_option.rb +4 -2
- data/lib/mongoid/errors/invalid_scope.rb +2 -0
- data/lib/mongoid/errors/invalid_session_use.rb +2 -0
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +6 -4
- data/lib/mongoid/errors/invalid_storage_options.rb +2 -0
- data/lib/mongoid/errors/invalid_storage_parent.rb +2 -0
- data/lib/mongoid/errors/invalid_time.rb +2 -0
- data/lib/mongoid/errors/invalid_value.rb +2 -0
- data/lib/mongoid/errors/inverse_not_found.rb +3 -1
- data/lib/mongoid/errors/mixed_client_configuration.rb +2 -0
- data/lib/mongoid/errors/mixed_relations.rb +2 -0
- data/lib/mongoid/errors/mongoid_error.rb +3 -1
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +3 -1
- data/lib/mongoid/errors/no_client_config.rb +4 -2
- data/lib/mongoid/errors/no_client_database.rb +2 -0
- data/lib/mongoid/errors/no_client_hosts.rb +2 -0
- data/lib/mongoid/errors/no_clients_config.rb +2 -0
- data/lib/mongoid/errors/no_default_client.rb +3 -1
- data/lib/mongoid/errors/no_environment.rb +2 -0
- data/lib/mongoid/errors/no_map_reduce_output.rb +2 -0
- data/lib/mongoid/errors/no_metadata.rb +2 -0
- data/lib/mongoid/errors/no_parent.rb +2 -0
- data/lib/mongoid/errors/readonly_attribute.rb +2 -0
- data/lib/mongoid/errors/readonly_document.rb +2 -0
- data/lib/mongoid/errors/scope_overwrite.rb +2 -0
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +3 -0
- data/lib/mongoid/errors/unknown_attribute.rb +2 -0
- data/lib/mongoid/errors/unknown_model.rb +2 -0
- data/lib/mongoid/errors/unsaved_document.rb +2 -0
- data/lib/mongoid/errors/unsupported_javascript.rb +2 -0
- data/lib/mongoid/errors/validations.rb +2 -0
- data/lib/mongoid/errors.rb +12 -0
- data/lib/mongoid/evolvable.rb +4 -2
- data/lib/mongoid/extensions/array.rb +23 -6
- data/lib/mongoid/extensions/big_decimal.rb +2 -0
- data/lib/mongoid/extensions/boolean.rb +3 -2
- data/lib/mongoid/extensions/date.rb +13 -3
- data/lib/mongoid/extensions/date_time.rb +4 -3
- data/lib/mongoid/extensions/decimal128.rb +2 -0
- data/lib/mongoid/extensions/false_class.rb +3 -1
- data/lib/mongoid/extensions/float.rb +5 -3
- data/lib/mongoid/extensions/hash.rb +49 -9
- data/lib/mongoid/extensions/integer.rb +5 -3
- data/lib/mongoid/extensions/module.rb +2 -0
- data/lib/mongoid/extensions/nil_class.rb +2 -0
- data/lib/mongoid/extensions/object.rb +16 -4
- data/lib/mongoid/extensions/object_id.rb +2 -0
- data/lib/mongoid/extensions/range.rb +2 -0
- data/lib/mongoid/extensions/regexp.rb +2 -0
- data/lib/mongoid/extensions/set.rb +2 -0
- data/lib/mongoid/extensions/string.rb +18 -9
- data/lib/mongoid/extensions/symbol.rb +2 -0
- data/lib/mongoid/extensions/time.rb +14 -0
- data/lib/mongoid/extensions/time_with_zone.rb +14 -0
- data/lib/mongoid/extensions/true_class.rb +3 -1
- data/lib/mongoid/extensions.rb +3 -0
- data/lib/mongoid/factory.rb +52 -12
- data/lib/mongoid/fields/foreign_key.rb +3 -1
- data/lib/mongoid/fields/localized.rb +2 -0
- data/lib/mongoid/fields/standard.rb +6 -3
- data/lib/mongoid/fields/validators/macro.rb +38 -11
- data/lib/mongoid/fields/validators.rb +2 -0
- data/lib/mongoid/fields.rb +49 -6
- data/lib/mongoid/findable.rb +59 -18
- data/lib/mongoid/indexable/specification.rb +3 -1
- data/lib/mongoid/indexable/validators/options.rb +2 -0
- data/lib/mongoid/indexable.rb +5 -3
- data/lib/mongoid/inspectable.rb +4 -2
- data/lib/mongoid/interceptable.rb +10 -4
- data/lib/mongoid/loggable.rb +13 -7
- data/lib/mongoid/matchable.rb +2 -148
- data/lib/mongoid/matcher/all.rb +22 -0
- data/lib/mongoid/matcher/and.rb +21 -0
- data/lib/mongoid/matcher/bits.rb +41 -0
- data/lib/mongoid/matcher/bits_all_clear.rb +20 -0
- data/lib/mongoid/matcher/bits_all_set.rb +20 -0
- data/lib/mongoid/matcher/bits_any_clear.rb +20 -0
- data/lib/mongoid/matcher/bits_any_set.rb +20 -0
- data/lib/mongoid/matcher/elem_match.rb +36 -0
- data/lib/mongoid/matcher/elem_match_expression.rb +20 -0
- data/lib/mongoid/matcher/eq.rb +11 -0
- data/lib/mongoid/matcher/eq_impl.rb +32 -0
- data/lib/mongoid/matcher/eq_impl_with_regexp.rb +21 -0
- data/lib/mongoid/matcher/exists.rb +15 -0
- data/lib/mongoid/matcher/expression.rb +35 -0
- data/lib/mongoid/matcher/expression_operator.rb +19 -0
- data/lib/mongoid/matcher/field_expression.rb +62 -0
- data/lib/mongoid/matcher/field_operator.rb +54 -0
- data/lib/mongoid/matcher/gt.rb +17 -0
- data/lib/mongoid/matcher/gte.rb +17 -0
- data/lib/mongoid/matcher/in.rb +25 -0
- data/lib/mongoid/matcher/lt.rb +17 -0
- data/lib/mongoid/matcher/lte.rb +17 -0
- data/lib/mongoid/matcher/mod.rb +17 -0
- data/lib/mongoid/matcher/ne.rb +16 -0
- data/lib/mongoid/matcher/nin.rb +11 -0
- data/lib/mongoid/matcher/nor.rb +25 -0
- data/lib/mongoid/matcher/not.rb +29 -0
- data/lib/mongoid/matcher/or.rb +21 -0
- data/lib/mongoid/matcher/regex.rb +41 -0
- data/lib/mongoid/matcher/size.rb +26 -0
- data/lib/mongoid/matcher/type.rb +99 -0
- data/lib/mongoid/matcher.rb +110 -0
- data/lib/mongoid/persistable/creatable.rb +3 -1
- data/lib/mongoid/persistable/deletable.rb +5 -4
- data/lib/mongoid/persistable/destroyable.rb +11 -3
- data/lib/mongoid/persistable/incrementable.rb +6 -2
- data/lib/mongoid/persistable/logical.rb +4 -1
- data/lib/mongoid/persistable/poppable.rb +3 -1
- data/lib/mongoid/persistable/pullable.rb +3 -1
- data/lib/mongoid/persistable/pushable.rb +3 -1
- data/lib/mongoid/persistable/renamable.rb +10 -3
- data/lib/mongoid/persistable/savable.rb +3 -1
- data/lib/mongoid/persistable/settable.rb +3 -1
- data/lib/mongoid/persistable/unsettable.rb +8 -3
- data/lib/mongoid/persistable/updatable.rb +30 -3
- data/lib/mongoid/persistable/upsertable.rb +3 -1
- data/lib/mongoid/persistable.rb +133 -15
- data/lib/mongoid/persistence_context.rb +24 -10
- data/lib/mongoid/positional.rb +2 -0
- data/lib/mongoid/query_cache.rb +118 -100
- data/lib/mongoid/railtie.rb +3 -1
- data/lib/mongoid/railties/controller_runtime.rb +4 -1
- data/lib/mongoid/railties/database.rake +9 -0
- data/lib/mongoid/reloadable.rb +11 -4
- data/lib/mongoid/scopable.rb +2 -1
- data/lib/mongoid/selectable.rb +8 -8
- data/lib/mongoid/serializable.rb +24 -14
- data/lib/mongoid/shardable.rb +80 -10
- data/lib/mongoid/stateful.rb +3 -1
- data/lib/mongoid/stringified_symbol.rb +53 -0
- data/lib/mongoid/tasks/database.rake +12 -5
- data/lib/mongoid/tasks/database.rb +85 -0
- data/lib/mongoid/threaded/lifecycle.rb +2 -0
- data/lib/mongoid/threaded.rb +2 -0
- data/lib/mongoid/timestamps/created/short.rb +2 -0
- data/lib/mongoid/timestamps/created.rb +3 -1
- data/lib/mongoid/timestamps/short.rb +2 -0
- data/lib/mongoid/timestamps/timeless.rb +6 -2
- data/lib/mongoid/timestamps/updated/short.rb +2 -0
- data/lib/mongoid/timestamps/updated.rb +3 -1
- data/lib/mongoid/timestamps.rb +3 -1
- data/lib/mongoid/touchable.rb +53 -16
- data/lib/mongoid/traversable.rb +115 -6
- data/lib/mongoid/validatable/associated.rb +5 -3
- data/lib/mongoid/validatable/format.rb +2 -0
- data/lib/mongoid/validatable/length.rb +2 -0
- data/lib/mongoid/validatable/localizable.rb +2 -0
- data/lib/mongoid/validatable/macros.rb +2 -0
- data/lib/mongoid/validatable/presence.rb +7 -5
- data/lib/mongoid/validatable/queryable.rb +2 -0
- data/lib/mongoid/validatable/uniqueness.rb +5 -3
- data/lib/mongoid/validatable.rb +7 -5
- data/lib/mongoid/version.rb +2 -1
- data/lib/mongoid.rb +34 -2
- data/lib/rails/generators/mongoid/config/config_generator.rb +10 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +45 -30
- data/lib/rails/generators/mongoid/model/model_generator.rb +3 -1
- data/lib/rails/generators/mongoid_generator.rb +2 -0
- data/lib/rails/mongoid.rb +4 -2
- data/lib/support/ruby_version.rb +3 -0
- data/spec/README.md +19 -4
- data/spec/config/mongoid.yml +1 -0
- data/spec/integration/app_spec.rb +246 -94
- data/spec/integration/associations/belongs_to_spec.rb +3 -0
- data/spec/integration/associations/embedded_spec.rb +207 -0
- data/spec/integration/associations/embeds_many_spec.rb +68 -0
- data/spec/integration/associations/embeds_one_spec.rb +24 -0
- data/spec/integration/associations/foreign_key_spec.rb +99 -0
- data/spec/integration/associations/foreign_key_spec_models.rb +65 -0
- data/spec/integration/associations/has_many_spec.rb +129 -0
- data/spec/integration/associations/has_one_spec.rb +177 -0
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +116 -0
- data/spec/integration/associations/reverse_population_spec.rb +35 -0
- data/spec/integration/associations/reverse_population_spec_models.rb +37 -0
- data/spec/integration/atomic/modifiers_spec.rb +117 -0
- data/spec/integration/bson_regexp_raw_spec.rb +20 -0
- data/spec/integration/contextual/empty_spec.rb +142 -0
- data/spec/integration/criteria/date_field_spec.rb +1 -1
- data/spec/integration/criteria/default_scope_spec.rb +21 -0
- data/spec/integration/criteria/logical_spec.rb +94 -0
- data/spec/integration/discriminator_key_spec.rb +354 -0
- data/spec/integration/discriminator_value_spec.rb +207 -0
- data/spec/integration/document_spec.rb +30 -0
- data/spec/integration/i18n_fallbacks_spec.rb +90 -0
- data/spec/integration/{matchable_spec.rb → matcher_examples_spec.rb} +120 -41
- data/spec/integration/matcher_operator_data/all.yml +140 -0
- data/spec/integration/matcher_operator_data/and.yml +93 -0
- data/spec/integration/matcher_operator_data/bits_all_clear.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_all_set.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_any_clear.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_any_set.yml +159 -0
- data/spec/integration/matcher_operator_data/comment.yml +22 -0
- data/spec/integration/matcher_operator_data/elem_match.yml +409 -0
- data/spec/integration/matcher_operator_data/elem_match_expr.yml +213 -0
- data/spec/integration/matcher_operator_data/eq.yml +191 -0
- data/spec/integration/matcher_operator_data/exists.yml +213 -0
- data/spec/integration/matcher_operator_data/generic_op.yml +17 -0
- data/spec/integration/matcher_operator_data/gt.yml +132 -0
- data/spec/integration/matcher_operator_data/gt_types.yml +63 -0
- data/spec/integration/matcher_operator_data/gte.yml +132 -0
- data/spec/integration/matcher_operator_data/gte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/implicit.yml +331 -0
- data/spec/integration/matcher_operator_data/implicit_traversal.yml +112 -0
- data/spec/integration/matcher_operator_data/in.yml +210 -0
- data/spec/integration/matcher_operator_data/invalid_op.yml +59 -0
- data/spec/integration/matcher_operator_data/invalid_syntax.yml +39 -0
- data/spec/integration/matcher_operator_data/lt.yml +132 -0
- data/spec/integration/matcher_operator_data/lt_types.yml +15 -0
- data/spec/integration/matcher_operator_data/lte.yml +132 -0
- data/spec/integration/matcher_operator_data/lte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/mod.yml +55 -0
- data/spec/integration/matcher_operator_data/multiple.yml +29 -0
- data/spec/integration/matcher_operator_data/ne.yml +150 -0
- data/spec/integration/matcher_operator_data/ne_types.yml +15 -0
- data/spec/integration/matcher_operator_data/nin.yml +114 -0
- data/spec/integration/matcher_operator_data/nor.yml +126 -0
- data/spec/integration/matcher_operator_data/not.yml +196 -0
- data/spec/integration/matcher_operator_data/or.yml +137 -0
- data/spec/integration/matcher_operator_data/regex.yml +174 -0
- data/spec/integration/matcher_operator_data/regex_options.yml +72 -0
- data/spec/integration/matcher_operator_data/size.yml +174 -0
- data/spec/integration/matcher_operator_data/type.yml +70 -0
- data/spec/integration/matcher_operator_data/type_array.yml +16 -0
- data/spec/integration/matcher_operator_data/type_binary.yml +18 -0
- data/spec/integration/matcher_operator_data/type_boolean.yml +39 -0
- data/spec/integration/matcher_operator_data/type_code.yml +26 -0
- data/spec/integration/matcher_operator_data/type_code_with_scope.yml +26 -0
- data/spec/integration/matcher_operator_data/type_date.yml +39 -0
- data/spec/integration/matcher_operator_data/type_db_pointer.yml +19 -0
- data/spec/integration/matcher_operator_data/type_decimal.yml +40 -0
- data/spec/integration/matcher_operator_data/type_double.yml +15 -0
- data/spec/integration/matcher_operator_data/type_int32.yml +33 -0
- data/spec/integration/matcher_operator_data/type_int64.yml +33 -0
- data/spec/integration/matcher_operator_data/type_max_key.yml +17 -0
- data/spec/integration/matcher_operator_data/type_min_key.yml +17 -0
- data/spec/integration/matcher_operator_data/type_null.yml +23 -0
- data/spec/integration/matcher_operator_data/type_object.yml +23 -0
- data/spec/integration/matcher_operator_data/type_object_id.yml +25 -0
- data/spec/integration/matcher_operator_data/type_regex.yml +44 -0
- data/spec/integration/matcher_operator_data/type_string.yml +15 -0
- data/spec/integration/matcher_operator_data/type_symbol.yml +32 -0
- data/spec/integration/matcher_operator_data/type_timestamp.yml +25 -0
- data/spec/integration/matcher_operator_data/type_undefined.yml +17 -0
- data/spec/integration/matcher_operator_spec.rb +100 -0
- data/spec/integration/matcher_spec.rb +189 -0
- data/spec/integration/server_query_spec.rb +142 -0
- data/spec/integration/shardable_spec.rb +149 -0
- data/spec/integration/stringified_symbol_field_spec.rb +190 -0
- data/spec/lite_spec_helper.rb +15 -5
- data/spec/mongoid/association/accessors_spec.rb +241 -63
- data/spec/mongoid/association/auto_save_spec.rb +3 -0
- data/spec/mongoid/association/builders_spec.rb +3 -0
- data/spec/mongoid/association/constrainable_spec.rb +3 -0
- data/spec/mongoid/association/counter_cache_spec.rb +3 -0
- data/spec/mongoid/association/depending_spec.rb +427 -333
- data/spec/mongoid/association/eager_spec.rb +3 -0
- data/spec/mongoid/association/embedded/cyclic_spec.rb +3 -0
- data/spec/mongoid/association/embedded/dirty_spec.rb +3 -0
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +3 -0
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +3 -0
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +3 -0
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +4 -1
- data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +3 -0
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +3 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +53 -4
- data/spec/mongoid/association/embedded/embeds_many_models.rb +1 -0
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +52 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +4 -1
- data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +3 -0
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +3 -0
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +3 -0
- data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +3 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +4 -0
- data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +29 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +4 -1
- data/spec/mongoid/association/macros_spec.rb +3 -0
- data/spec/mongoid/association/nested/many_spec.rb +3 -0
- data/spec/mongoid/association/nested/one_spec.rb +19 -12
- data/spec/mongoid/association/options_spec.rb +3 -0
- data/spec/mongoid/association/polymorphic_spec.rb +3 -0
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +3 -0
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +3 -0
- data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +205 -10
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +45 -8
- data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +58 -0
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +3 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +4 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +3 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +16 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +26 -5
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +37 -14
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +26 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +40 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +26 -2
- data/spec/mongoid/association/referenced/has_many/binding_spec.rb +4 -1
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +3 -0
- data/spec/mongoid/association/referenced/has_many/eager_spec.rb +18 -3
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +248 -93
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +1 -0
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +463 -186
- data/spec/mongoid/association/referenced/has_many_models.rb +41 -0
- data/spec/mongoid/association/referenced/has_many_query_spec.rb +38 -0
- data/spec/mongoid/association/referenced/has_many_spec.rb +3 -0
- data/spec/mongoid/association/referenced/has_one/binding_spec.rb +3 -0
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +3 -0
- data/spec/mongoid/association/referenced/has_one/eager_spec.rb +18 -3
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +3 -0
- data/spec/mongoid/association/referenced/has_one_models.rb +32 -0
- data/spec/mongoid/association/referenced/has_one_query_spec.rb +38 -0
- data/spec/mongoid/association/referenced/has_one_spec.rb +4 -1
- data/spec/mongoid/association/reflections_spec.rb +3 -0
- data/spec/mongoid/association/syncable_spec.rb +3 -0
- data/spec/mongoid/association_spec.rb +3 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +50 -0
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +3 -0
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +3 -0
- data/spec/mongoid/atomic/paths/root_spec.rb +3 -0
- data/spec/mongoid/atomic/paths_spec.rb +67 -12
- data/spec/mongoid/atomic_spec.rb +26 -0
- data/spec/mongoid/attributes/nested_spec.rb +4 -1
- data/spec/mongoid/attributes/projector_data/embedded.yml +105 -0
- data/spec/mongoid/attributes/projector_data/fields.yml +93 -0
- data/spec/mongoid/attributes/projector_spec.rb +41 -0
- data/spec/mongoid/attributes/readonly_spec.rb +3 -0
- data/spec/mongoid/attributes_spec.rb +336 -0
- data/spec/mongoid/cacheable_spec.rb +3 -0
- data/spec/mongoid/changeable_spec.rb +26 -0
- data/spec/mongoid/clients/factory_spec.rb +137 -28
- data/spec/mongoid/clients/options_spec.rb +42 -23
- data/spec/mongoid/clients/sessions_spec.rb +4 -6
- data/spec/mongoid/clients/transactions_spec.rb +6 -3
- data/spec/mongoid/clients_spec.rb +3 -0
- data/spec/mongoid/composable_spec.rb +3 -0
- data/spec/mongoid/config/environment_spec.rb +89 -8
- data/spec/mongoid/config/options_spec.rb +23 -3
- data/spec/mongoid/config_spec.rb +172 -0
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +3 -0
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +3 -0
- data/spec/mongoid/contextual/atomic_spec.rb +181 -29
- data/spec/mongoid/contextual/geo_near_spec.rb +4 -1
- data/spec/mongoid/contextual/map_reduce_spec.rb +3 -0
- data/spec/mongoid/contextual/memory_spec.rb +3 -0
- data/spec/mongoid/contextual/mongo_spec.rb +77 -18
- data/spec/mongoid/contextual/none_spec.rb +3 -0
- data/spec/mongoid/copyable_spec.rb +200 -18
- data/spec/mongoid/copyable_spec_models.rb +31 -0
- data/spec/mongoid/criteria/findable_spec.rb +58 -0
- data/spec/mongoid/criteria/inspectable_spec.rb +3 -0
- data/spec/mongoid/criteria/marshalable_spec.rb +3 -0
- data/spec/mongoid/criteria/modifiable_spec.rb +8 -4
- data/spec/mongoid/criteria/options_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/aggregable_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/expandable_spec.rb +62 -0
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +4 -1
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +36 -17
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +4 -1
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +24 -16
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/key_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +146 -12
- data/spec/mongoid/criteria/queryable/optional_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/options_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/queryable_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +1593 -285
- data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +39 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +1048 -2773
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +590 -0
- data/spec/mongoid/criteria/queryable/selector_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/smash_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/storable_spec.rb +190 -0
- data/spec/mongoid/criteria/scopable_spec.rb +3 -0
- data/spec/mongoid/criteria_projection_spec.rb +411 -0
- data/spec/mongoid/criteria_spec.rb +241 -278
- data/spec/mongoid/document_fields_spec.rb +26 -0
- data/spec/mongoid/document_query_spec.rb +90 -0
- data/spec/mongoid/document_spec.rb +113 -16
- data/spec/mongoid/equality_spec.rb +3 -1
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +6 -3
- data/spec/mongoid/errors/callback_spec.rb +3 -0
- data/spec/mongoid/errors/delete_restriction_spec.rb +5 -2
- data/spec/mongoid/errors/document_not_destroyed_spec.rb +3 -0
- data/spec/mongoid/errors/document_not_found_spec.rb +3 -0
- data/spec/mongoid/errors/eager_load_spec.rb +3 -0
- data/spec/mongoid/errors/invalid_collection_spec.rb +3 -0
- data/spec/mongoid/errors/invalid_config_file_spec.rb +32 -0
- data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -0
- data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -0
- data/spec/mongoid/errors/invalid_field_spec.rb +3 -0
- data/spec/mongoid/errors/invalid_find_spec.rb +3 -0
- data/spec/mongoid/errors/invalid_includes_spec.rb +3 -0
- data/spec/mongoid/errors/invalid_index_spec.rb +3 -0
- data/spec/mongoid/errors/invalid_options_spec.rb +5 -2
- data/spec/mongoid/errors/invalid_path_spec.rb +3 -0
- data/spec/mongoid/errors/invalid_relation_spec.rb +5 -2
- data/spec/mongoid/errors/invalid_scope_spec.rb +3 -0
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -0
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -0
- data/spec/mongoid/errors/invalid_time_spec.rb +3 -0
- data/spec/mongoid/errors/inverse_not_found_spec.rb +4 -1
- data/spec/mongoid/errors/mixed_client_configuration_spec.rb +3 -0
- data/spec/mongoid/errors/mixed_relations_spec.rb +3 -0
- data/spec/mongoid/errors/mongoid_error_spec.rb +23 -8
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +6 -3
- data/spec/mongoid/errors/no_client_config_spec.rb +5 -2
- data/spec/mongoid/errors/no_client_database_spec.rb +6 -3
- data/spec/mongoid/errors/no_client_hosts_spec.rb +6 -3
- data/spec/mongoid/errors/no_clients_config_spec.rb +3 -0
- data/spec/mongoid/errors/no_environment_spec.rb +3 -0
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -0
- data/spec/mongoid/errors/no_metadata_spec.rb +5 -2
- data/spec/mongoid/errors/no_parent_spec.rb +4 -1
- data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -0
- data/spec/mongoid/errors/readonly_document_spec.rb +3 -0
- data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -0
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -0
- data/spec/mongoid/errors/unknown_attribute_spec.rb +3 -0
- data/spec/mongoid/errors/unsaved_document_spec.rb +4 -1
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -0
- data/spec/mongoid/errors/validations_spec.rb +3 -0
- data/spec/mongoid/extensions/array_spec.rb +26 -43
- data/spec/mongoid/extensions/big_decimal_spec.rb +3 -0
- data/spec/mongoid/extensions/binary_spec.rb +3 -0
- data/spec/mongoid/extensions/boolean_spec.rb +3 -0
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +336 -0
- data/spec/mongoid/extensions/date_spec.rb +9 -160
- data/spec/mongoid/extensions/date_time_spec.rb +18 -60
- data/spec/mongoid/extensions/decimal128_spec.rb +3 -0
- data/spec/mongoid/extensions/false_class_spec.rb +4 -1
- data/spec/mongoid/extensions/float_spec.rb +18 -3
- data/spec/mongoid/extensions/hash_spec.rb +106 -0
- data/spec/mongoid/extensions/integer_spec.rb +15 -2
- data/spec/mongoid/extensions/module_spec.rb +3 -0
- data/spec/mongoid/extensions/nil_class_spec.rb +3 -0
- data/spec/mongoid/extensions/object_id_spec.rb +3 -0
- data/spec/mongoid/extensions/object_spec.rb +14 -24
- data/spec/mongoid/extensions/range_spec.rb +3 -0
- data/spec/mongoid/extensions/regexp_spec.rb +3 -0
- data/spec/mongoid/extensions/set_spec.rb +3 -0
- data/spec/mongoid/extensions/string_spec.rb +59 -25
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +85 -0
- data/spec/mongoid/extensions/symbol_spec.rb +3 -0
- data/spec/mongoid/extensions/time_spec.rb +30 -0
- data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -0
- data/spec/mongoid/extensions/true_class_spec.rb +4 -1
- data/spec/mongoid/extensions_spec.rb +3 -0
- data/spec/mongoid/factory_spec.rb +287 -27
- data/spec/mongoid/fields/foreign_key_spec.rb +3 -0
- data/spec/mongoid/fields/localized_spec.rb +7 -4
- data/spec/mongoid/fields/standard_spec.rb +3 -0
- data/spec/mongoid/fields_spec.rb +93 -6
- data/spec/mongoid/findable_spec.rb +35 -0
- data/spec/mongoid/indexable/specification_spec.rb +3 -0
- data/spec/mongoid/indexable_spec.rb +31 -2
- data/spec/mongoid/inspectable_spec.rb +40 -2
- data/spec/mongoid/interceptable_spec.rb +67 -2
- data/spec/mongoid/interceptable_spec_models.rb +76 -0
- data/spec/mongoid/loggable_spec.rb +3 -0
- data/spec/mongoid/matcher/extract_attribute_data/numeric_keys.yml +104 -0
- data/spec/mongoid/matcher/extract_attribute_data/traversal.yml +239 -0
- data/spec/mongoid/matcher/extract_attribute_spec.rb +37 -0
- data/spec/mongoid/persistable/creatable_spec.rb +111 -25
- data/spec/mongoid/persistable/deletable_spec.rb +264 -1
- data/spec/mongoid/persistable/destroyable_spec.rb +194 -3
- data/spec/mongoid/persistable/incrementable_spec.rb +17 -0
- data/spec/mongoid/persistable/logical_spec.rb +17 -0
- data/spec/mongoid/persistable/poppable_spec.rb +17 -0
- data/spec/mongoid/persistable/pullable_spec.rb +31 -0
- data/spec/mongoid/persistable/pushable_spec.rb +31 -0
- data/spec/mongoid/persistable/renamable_spec.rb +17 -0
- data/spec/mongoid/persistable/savable_spec.rb +175 -16
- data/spec/mongoid/persistable/settable_spec.rb +47 -0
- data/spec/mongoid/persistable/unsettable_spec.rb +17 -0
- data/spec/mongoid/persistable/updatable_spec.rb +5 -0
- data/spec/mongoid/persistable/upsertable_spec.rb +4 -1
- data/spec/mongoid/persistable_spec.rb +85 -8
- data/spec/mongoid/persistence_context_spec.rb +3 -0
- data/spec/mongoid/positional_spec.rb +3 -0
- data/spec/mongoid/query_cache_middleware_spec.rb +69 -0
- data/spec/mongoid/query_cache_spec.rb +466 -82
- data/spec/mongoid/relations/proxy_spec.rb +3 -0
- data/spec/mongoid/reloadable_spec.rb +93 -1
- data/spec/mongoid/scopable_spec.rb +3 -0
- data/spec/mongoid/selectable_spec.rb +3 -0
- data/spec/mongoid/serializable_spec.rb +152 -20
- data/spec/mongoid/shardable_models.rb +61 -0
- data/spec/mongoid/shardable_spec.rb +116 -16
- data/spec/mongoid/stateful_spec.rb +3 -0
- data/spec/mongoid/tasks/database_rake_spec.rb +3 -0
- data/spec/mongoid/tasks/database_spec.rb +3 -0
- data/spec/mongoid/threaded_spec.rb +3 -0
- data/spec/mongoid/timestamps/created/short_spec.rb +3 -0
- data/spec/mongoid/timestamps/created_spec.rb +3 -0
- data/spec/mongoid/timestamps/timeless_spec.rb +3 -0
- data/spec/mongoid/timestamps/updated/short_spec.rb +3 -0
- data/spec/mongoid/timestamps/updated_spec.rb +3 -0
- data/spec/mongoid/timestamps_spec.rb +3 -0
- data/spec/mongoid/touchable_spec.rb +171 -19
- data/spec/mongoid/touchable_spec_models.rb +54 -0
- data/spec/mongoid/traversable_spec.rb +1103 -0
- data/spec/mongoid/validatable/associated_spec.rb +3 -0
- data/spec/mongoid/validatable/format_spec.rb +3 -0
- data/spec/mongoid/validatable/length_spec.rb +3 -0
- data/spec/mongoid/validatable/numericality_spec.rb +3 -0
- data/spec/mongoid/validatable/presence_spec.rb +3 -0
- data/spec/mongoid/validatable/uniqueness_spec.rb +3 -0
- data/spec/mongoid/validatable_spec.rb +4 -1
- data/spec/mongoid_spec.rb +3 -0
- data/spec/rails/controller_extension/controller_runtime_spec.rb +4 -1
- data/spec/rails/mongoid_spec.rb +5 -2
- data/spec/shared/bin/get-mongodb-download-url +17 -0
- data/spec/shared/bin/s3-copy +45 -0
- data/spec/shared/bin/s3-upload +69 -0
- data/spec/shared/lib/mrss/cluster_config.rb +19 -4
- data/spec/shared/lib/mrss/constraints.rb +67 -12
- data/spec/shared/lib/mrss/docker_runner.rb +10 -1
- data/spec/shared/lib/mrss/event_subscriber.rb +200 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +16 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +84 -33
- data/spec/shared/lib/mrss/spec_organizer.rb +32 -2
- data/spec/shared/lib/mrss/utils.rb +15 -0
- data/spec/shared/share/Dockerfile.erb +126 -32
- data/spec/shared/share/haproxy-1.conf +16 -0
- data/spec/shared/share/haproxy-2.conf +17 -0
- data/spec/shared/shlib/server.sh +123 -26
- data/spec/shared/shlib/set_env.sh +4 -1
- data/spec/spec_helper.rb +31 -17
- data/spec/support/authorization.rb +3 -0
- data/spec/support/client_registry.rb +9 -0
- data/spec/support/constraints.rb +15 -233
- data/spec/support/expectations.rb +6 -1
- data/spec/support/helpers.rb +11 -0
- data/spec/support/macros.rb +1 -0
- data/spec/{app → support}/models/account.rb +3 -0
- data/spec/{app → support}/models/acolyte.rb +3 -0
- data/spec/{app → support}/models/actor.rb +4 -1
- data/spec/support/models/actress.rb +5 -0
- data/spec/{app → support}/models/address.rb +7 -0
- data/spec/{app → support}/models/address_component.rb +3 -0
- data/spec/{app → support}/models/address_number.rb +3 -0
- data/spec/{app → support}/models/agency.rb +3 -0
- data/spec/{app → support}/models/agent.rb +3 -0
- data/spec/{app → support}/models/album.rb +3 -0
- data/spec/{app → support}/models/alert.rb +3 -0
- data/spec/{app → support}/models/animal.rb +3 -0
- data/spec/{app → support}/models/answer.rb +3 -0
- data/spec/{app → support}/models/appointment.rb +3 -0
- data/spec/support/models/armrest.rb +10 -0
- data/spec/{app → support}/models/array_field.rb +1 -0
- data/spec/{app → support}/models/article.rb +3 -0
- data/spec/{app → support}/models/artist.rb +3 -0
- data/spec/{app → support}/models/artwork.rb +3 -0
- data/spec/{app → support}/models/audio.rb +3 -0
- data/spec/{app → support}/models/augmentation.rb +3 -0
- data/spec/{app → support}/models/author.rb +3 -0
- data/spec/{app → support}/models/baby.rb +3 -0
- data/spec/{app → support}/models/band.rb +3 -0
- data/spec/{app → support}/models/bar.rb +3 -0
- data/spec/{app → support}/models/basic.rb +3 -0
- data/spec/support/models/bed.rb +4 -0
- data/spec/support/models/big_palette.rb +5 -0
- data/spec/{app → support}/models/birthday.rb +3 -0
- data/spec/support/models/bolt.rb +8 -0
- data/spec/{app → support}/models/bomb.rb +3 -0
- data/spec/{app → support}/models/book.rb +3 -0
- data/spec/{app → support}/models/breed.rb +3 -0
- data/spec/support/models/browser.rb +9 -0
- data/spec/{app → support}/models/building.rb +3 -0
- data/spec/{app → support}/models/building_address.rb +3 -0
- data/spec/{app → support}/models/bus.rb +3 -0
- data/spec/{app → support}/models/business.rb +3 -0
- data/spec/{app → support}/models/callback_test.rb +3 -0
- data/spec/{app → support}/models/canvas.rb +4 -1
- data/spec/support/models/car.rb +4 -0
- data/spec/{app → support}/models/cat.rb +3 -0
- data/spec/{app → support}/models/category.rb +3 -0
- data/spec/{app → support}/models/child.rb +3 -0
- data/spec/{app → support}/models/child_doc.rb +3 -0
- data/spec/{app → support}/models/church.rb +3 -0
- data/spec/{app → support}/models/circle.rb +3 -0
- data/spec/{app → support}/models/circuit.rb +3 -0
- data/spec/{app → support}/models/circus.rb +3 -0
- data/spec/{app → support}/models/code.rb +3 -0
- data/spec/support/models/coding/pull_request.rb +12 -0
- data/spec/support/models/coding.rb +4 -0
- data/spec/{app → support}/models/comment.rb +3 -0
- data/spec/{app → support}/models/company.rb +3 -0
- data/spec/{app → support}/models/consumption_period.rb +3 -0
- data/spec/{app → support}/models/contextable_item.rb +3 -0
- data/spec/{app → support}/models/contractor.rb +3 -0
- data/spec/{app → support}/models/cookie.rb +3 -0
- data/spec/{app → support}/models/country_code.rb +3 -0
- data/spec/{app → support}/models/courier_job.rb +3 -0
- data/spec/support/models/crate.rb +13 -0
- data/spec/{app → support}/models/customer.rb +0 -0
- data/spec/{app → support}/models/customer_address.rb +0 -0
- data/spec/support/models/deed.rb +8 -0
- data/spec/{app → support}/models/definition.rb +3 -0
- data/spec/{app → support}/models/delegating_patient.rb +0 -0
- data/spec/{app → support}/models/description.rb +3 -0
- data/spec/{app → support}/models/dictionary.rb +9 -0
- data/spec/{app → support}/models/division.rb +3 -0
- data/spec/{app → support}/models/doctor.rb +3 -0
- data/spec/{app → support}/models/dog.rb +3 -0
- data/spec/{app → support}/models/dokument.rb +3 -0
- data/spec/{app → support}/models/draft.rb +3 -0
- data/spec/{app → support}/models/dragon.rb +3 -0
- data/spec/{app → support}/models/driver.rb +4 -1
- data/spec/{app → support}/models/drug.rb +3 -0
- data/spec/{app → support}/models/dungeon.rb +3 -0
- data/spec/{app → support}/models/edit.rb +3 -0
- data/spec/{app → support}/models/email.rb +3 -0
- data/spec/support/models/employer.rb +8 -0
- data/spec/{app → support}/models/entry.rb +3 -0
- data/spec/support/models/eraser.rb +4 -0
- data/spec/{app → support}/models/even.rb +3 -0
- data/spec/{app → support}/models/event.rb +3 -0
- data/spec/{app → support}/models/exhibition.rb +3 -0
- data/spec/{app → support}/models/exhibitor.rb +3 -0
- data/spec/{app → support}/models/explosion.rb +3 -0
- data/spec/{app → support}/models/eye.rb +3 -0
- data/spec/{app → support}/models/eye_bowl.rb +3 -0
- data/spec/{app → support}/models/face.rb +3 -0
- data/spec/{app → support}/models/favorite.rb +3 -0
- data/spec/{app → support}/models/filesystem.rb +3 -0
- data/spec/{app → support}/models/fire_hydrant.rb +3 -0
- data/spec/{app → support}/models/firefox.rb +3 -0
- data/spec/{app → support}/models/fish.rb +3 -0
- data/spec/{app → support}/models/folder.rb +3 -0
- data/spec/{app → support}/models/folder_item.rb +3 -0
- data/spec/{app → support}/models/fruits.rb +3 -0
- data/spec/{app → support}/models/game.rb +3 -0
- data/spec/{app → support}/models/ghost.rb +3 -0
- data/spec/support/models/guitar.rb +5 -0
- data/spec/support/models/hole.rb +13 -0
- data/spec/{app → support}/models/home.rb +3 -0
- data/spec/{app → support}/models/house.rb +3 -0
- data/spec/support/models/html_writer.rb +6 -0
- data/spec/{app → support}/models/id_key.rb +3 -0
- data/spec/support/models/idnodef.rb +8 -0
- data/spec/{app → support}/models/image.rb +3 -0
- data/spec/{app → support}/models/implant.rb +3 -0
- data/spec/support/models/instrument.rb +9 -0
- data/spec/{app → support}/models/item.rb +4 -1
- data/spec/{app → support}/models/jar.rb +3 -0
- data/spec/{app → support}/models/kaleidoscope.rb +3 -0
- data/spec/{app → support}/models/kangaroo.rb +4 -1
- data/spec/{app → support}/models/label.rb +3 -0
- data/spec/{app → support}/models/language.rb +3 -0
- data/spec/{app → support}/models/lat_lng.rb +3 -0
- data/spec/{app → support}/models/league.rb +3 -0
- data/spec/support/models/learner.rb +5 -0
- data/spec/{app → support}/models/line_item.rb +3 -0
- data/spec/{app → support}/models/location.rb +3 -0
- data/spec/{app → support}/models/login.rb +3 -0
- data/spec/{app → support}/models/manufacturer.rb +3 -0
- data/spec/{app → support}/models/meat.rb +3 -0
- data/spec/{app → support}/models/membership.rb +3 -0
- data/spec/{app → support}/models/message.rb +3 -0
- data/spec/{app → support}/models/minim.rb +1 -1
- data/spec/{app → support}/models/mixed_drink.rb +3 -0
- data/spec/support/models/mop.rb +25 -0
- data/spec/{app → support}/models/movie.rb +3 -0
- data/spec/support/models/my_hash.rb +5 -0
- data/spec/{app → support}/models/name.rb +3 -0
- data/spec/support/models/name_only.rb +9 -0
- data/spec/{app → support}/models/node.rb +3 -0
- data/spec/{app → support}/models/note.rb +3 -0
- data/spec/support/models/nut.rb +8 -0
- data/spec/{app → support}/models/odd.rb +3 -0
- data/spec/support/models/order.rb +11 -0
- data/spec/{app → support}/models/ordered_post.rb +3 -0
- data/spec/{app → support}/models/ordered_preference.rb +3 -0
- data/spec/{app → support}/models/oscar.rb +3 -0
- data/spec/support/models/other_owner_object.rb +5 -0
- data/spec/{app → support}/models/override.rb +3 -0
- data/spec/{app → support}/models/ownable.rb +3 -0
- data/spec/{app → support}/models/owner.rb +5 -0
- data/spec/support/models/pack.rb +6 -0
- data/spec/{app → support}/models/page.rb +3 -0
- data/spec/{app → support}/models/page_question.rb +3 -0
- data/spec/{app → support}/models/palette.rb +4 -1
- data/spec/{app → support}/models/parent.rb +3 -0
- data/spec/{app → support}/models/parent_doc.rb +3 -0
- data/spec/{app → support}/models/passport.rb +4 -0
- data/spec/{app → support}/models/patient.rb +3 -0
- data/spec/support/models/pdf_writer.rb +6 -0
- data/spec/support/models/pencil.rb +4 -0
- data/spec/{app → support}/models/person.rb +21 -1
- data/spec/{app → support}/models/pet.rb +3 -0
- data/spec/{app → support}/models/pet_owner.rb +3 -0
- data/spec/{app → support}/models/phone.rb +4 -0
- data/spec/support/models/piano.rb +5 -0
- data/spec/{app → support}/models/pizza.rb +3 -0
- data/spec/{app → support}/models/player.rb +3 -0
- data/spec/{app → support}/models/post.rb +3 -0
- data/spec/{app → support}/models/post_genre.rb +3 -0
- data/spec/{app → support}/models/powerup.rb +3 -0
- data/spec/{app → support}/models/preference.rb +3 -0
- data/spec/{app → support}/models/princess.rb +3 -0
- data/spec/{app → support}/models/product.rb +3 -0
- data/spec/support/models/profile.rb +18 -0
- data/spec/{app → support}/models/pronunciation.rb +3 -0
- data/spec/{app → support}/models/pub.rb +3 -0
- data/spec/support/models/publication/encyclopedia.rb +12 -0
- data/spec/support/models/publication/review.rb +14 -0
- data/spec/support/models/publication.rb +5 -0
- data/spec/{app → support}/models/purchase.rb +3 -0
- data/spec/{app → support}/models/question.rb +3 -0
- data/spec/{app → support}/models/quiz.rb +3 -0
- data/spec/{app → support}/models/rating.rb +3 -0
- data/spec/{app → support}/models/record.rb +3 -0
- data/spec/{app → support}/models/registry.rb +3 -0
- data/spec/{app → support}/models/role.rb +3 -0
- data/spec/{app → support}/models/root_category.rb +3 -0
- data/spec/{app → support}/models/sandwich.rb +3 -0
- data/spec/{app → support}/models/scheduler.rb +3 -0
- data/spec/support/models/scribe.rb +8 -0
- data/spec/support/models/sealer.rb +8 -0
- data/spec/support/models/seat.rb +25 -0
- data/spec/{app → support}/models/seo.rb +3 -0
- data/spec/support/models/series.rb +8 -0
- data/spec/{app → support}/models/server.rb +3 -0
- data/spec/{app → support}/models/service.rb +3 -0
- data/spec/{app → support}/models/shape.rb +5 -2
- data/spec/{app → support}/models/shelf.rb +3 -0
- data/spec/{app → support}/models/shipment_address.rb +3 -0
- data/spec/{app → support}/models/shipping_container.rb +3 -0
- data/spec/{app → support}/models/shipping_pack.rb +3 -0
- data/spec/support/models/shirt.rb +12 -0
- data/spec/{app → support}/models/shop.rb +3 -0
- data/spec/{app → support}/models/short_agent.rb +3 -0
- data/spec/{app → support}/models/short_quiz.rb +3 -0
- data/spec/{app → support}/models/simple.rb +3 -0
- data/spec/{app → support}/models/slave.rb +3 -0
- data/spec/{app → support}/models/song.rb +3 -0
- data/spec/{app → support}/models/sound.rb +3 -0
- data/spec/support/models/spacer.rb +8 -0
- data/spec/{app → support}/models/square.rb +3 -0
- data/spec/{app → support}/models/staff.rb +3 -0
- data/spec/{app → support}/models/store_as_dup_test1.rb +3 -0
- data/spec/{app → support}/models/store_as_dup_test2.rb +3 -0
- data/spec/{app → support}/models/store_as_dup_test3.rb +1 -0
- data/spec/{app → support}/models/store_as_dup_test4.rb +1 -0
- data/spec/support/models/strategy.rb +6 -0
- data/spec/support/models/sub_item.rb +6 -0
- data/spec/{app → support}/models/subscription.rb +3 -0
- data/spec/{app → support}/models/survey.rb +3 -0
- data/spec/{app → support}/models/symptom.rb +3 -0
- data/spec/support/models/system_role.rb +7 -0
- data/spec/{app → support}/models/tag.rb +3 -0
- data/spec/{app → support}/models/target.rb +3 -0
- data/spec/{app → support}/models/template.rb +3 -0
- data/spec/{app → support}/models/thing.rb +3 -0
- data/spec/support/models/threadlocker.rb +8 -0
- data/spec/support/models/title.rb +6 -0
- data/spec/support/models/tool.rb +11 -0
- data/spec/{app → support}/models/topping.rb +3 -0
- data/spec/support/models/toy.rb +10 -0
- data/spec/{app → support}/models/track.rb +3 -0
- data/spec/{app → support}/models/translation.rb +3 -0
- data/spec/{app → support}/models/tree.rb +3 -0
- data/spec/support/models/truck.rb +8 -0
- data/spec/{app → support}/models/updatable.rb +1 -0
- data/spec/{app → support}/models/user.rb +3 -0
- data/spec/{app → support}/models/user_account.rb +3 -0
- data/spec/{app → support}/models/validation_callback.rb +3 -0
- data/spec/support/models/vehicle.rb +19 -0
- data/spec/{app → support}/models/version.rb +3 -0
- data/spec/{app → support}/models/vertex.rb +4 -1
- data/spec/{app → support}/models/vet_visit.rb +3 -0
- data/spec/{app → support}/models/video.rb +3 -0
- data/spec/support/models/video_game.rb +4 -0
- data/spec/support/models/washer.rb +8 -0
- data/spec/{app → support}/models/weapon.rb +3 -0
- data/spec/{app → support}/models/wiki_page.rb +4 -0
- data/spec/{app → support}/models/word.rb +3 -0
- data/spec/{app → support}/models/word_origin.rb +3 -0
- data/spec/{app → support}/models/writer.rb +5 -2
- data/spec/support/shared/time.rb +54 -0
- data/spec/support/spec_config.rb +14 -3
- data.tar.gz.sig +0 -0
- metadata +1035 -732
- metadata.gz.sig +2 -2
- data/lib/mongoid/criteria/queryable/forwardable.rb +0 -65
- data/lib/mongoid/matchable/all.rb +0 -28
- data/lib/mongoid/matchable/and.rb +0 -30
- data/lib/mongoid/matchable/default.rb +0 -119
- data/lib/mongoid/matchable/elem_match.rb +0 -34
- data/lib/mongoid/matchable/eq.rb +0 -22
- data/lib/mongoid/matchable/exists.rb +0 -23
- data/lib/mongoid/matchable/gt.rb +0 -23
- data/lib/mongoid/matchable/gte.rb +0 -23
- data/lib/mongoid/matchable/in.rb +0 -24
- data/lib/mongoid/matchable/lt.rb +0 -23
- data/lib/mongoid/matchable/lte.rb +0 -23
- data/lib/mongoid/matchable/ne.rb +0 -21
- data/lib/mongoid/matchable/nin.rb +0 -22
- data/lib/mongoid/matchable/nor.rb +0 -37
- data/lib/mongoid/matchable/or.rb +0 -33
- data/lib/mongoid/matchable/regexp.rb +0 -27
- data/lib/mongoid/matchable/size.rb +0 -21
- data/spec/app/models/actress.rb +0 -2
- data/spec/app/models/bed.rb +0 -1
- data/spec/app/models/big_palette.rb +0 -2
- data/spec/app/models/browser.rb +0 -6
- data/spec/app/models/car.rb +0 -1
- data/spec/app/models/employer.rb +0 -5
- data/spec/app/models/eraser.rb +0 -1
- data/spec/app/models/html_writer.rb +0 -3
- data/spec/app/models/learner.rb +0 -2
- data/spec/app/models/my_hash.rb +0 -2
- data/spec/app/models/other_owner_object.rb +0 -2
- data/spec/app/models/pack.rb +0 -3
- data/spec/app/models/pdf_writer.rb +0 -3
- data/spec/app/models/pencil.rb +0 -1
- data/spec/app/models/profile.rb +0 -5
- data/spec/app/models/series.rb +0 -4
- data/spec/app/models/strategy.rb +0 -3
- data/spec/app/models/sub_item.rb +0 -3
- data/spec/app/models/title.rb +0 -3
- data/spec/app/models/tool.rb +0 -8
- data/spec/app/models/truck.rb +0 -3
- data/spec/app/models/vehicle.rb +0 -11
- data/spec/app/models/video_game.rb +0 -1
- data/spec/mongoid/criteria/queryable/forwardable_spec.rb +0 -87
- data/spec/mongoid/matchable/all_spec.rb +0 -31
- data/spec/mongoid/matchable/and_spec.rb +0 -187
- data/spec/mongoid/matchable/default_spec.rb +0 -137
- data/spec/mongoid/matchable/elem_match_spec.rb +0 -106
- data/spec/mongoid/matchable/eq_spec.rb +0 -48
- data/spec/mongoid/matchable/exists_spec.rb +0 -57
- data/spec/mongoid/matchable/gt_spec.rb +0 -86
- data/spec/mongoid/matchable/gte_spec.rb +0 -84
- data/spec/mongoid/matchable/in_spec.rb +0 -49
- data/spec/mongoid/matchable/lt_spec.rb +0 -85
- data/spec/mongoid/matchable/lte_spec.rb +0 -85
- data/spec/mongoid/matchable/ne_spec.rb +0 -46
- data/spec/mongoid/matchable/nin_spec.rb +0 -48
- data/spec/mongoid/matchable/nor_spec.rb +0 -209
- data/spec/mongoid/matchable/or_spec.rb +0 -131
- data/spec/mongoid/matchable/regexp_spec.rb +0 -59
- data/spec/mongoid/matchable/size_spec.rb +0 -25
- data/spec/mongoid/matchable_spec.rb +0 -853
- data/spec/support/child_process_helper.rb +0 -76
- data/spec/support/cluster_config.rb +0 -158
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# encoding: utf-8
|
|
3
|
+
|
|
1
4
|
module Mongoid
|
|
2
5
|
module Association
|
|
3
6
|
module Embedded
|
|
@@ -5,9 +8,9 @@ module Mongoid
|
|
|
5
8
|
|
|
6
9
|
class Proxy < Association::One
|
|
7
10
|
|
|
8
|
-
# The valid options when defining this
|
|
11
|
+
# The valid options when defining this association.
|
|
9
12
|
#
|
|
10
|
-
# @return [ Array<Symbol> ] The allowed options when defining this
|
|
13
|
+
# @return [ Array<Symbol> ] The allowed options when defining this association.
|
|
11
14
|
#
|
|
12
15
|
# @since 7.0
|
|
13
16
|
VALID_OPTIONS = [
|
|
@@ -18,13 +21,13 @@ module Mongoid
|
|
|
18
21
|
:store_as
|
|
19
22
|
].freeze
|
|
20
23
|
|
|
21
|
-
# Instantiate a new embeds_one
|
|
24
|
+
# Instantiate a new embeds_one association.
|
|
22
25
|
#
|
|
23
26
|
# @example Create the new proxy.
|
|
24
27
|
# One.new(person, name, association)
|
|
25
28
|
#
|
|
26
|
-
# @param [ Document ] base The document this
|
|
27
|
-
# @param [ Document ] target The child document in the
|
|
29
|
+
# @param [ Document ] base The document this association hangs off of.
|
|
30
|
+
# @param [ Document ] target The child document in the association.
|
|
28
31
|
# @param [ Association ] association The association metadata.
|
|
29
32
|
def initialize(base, target, association)
|
|
30
33
|
init(base, target, association) do
|
|
@@ -37,14 +40,14 @@ module Mongoid
|
|
|
37
40
|
end
|
|
38
41
|
|
|
39
42
|
# Substitutes the supplied target documents for the existing document
|
|
40
|
-
# in the
|
|
43
|
+
# in the association.
|
|
41
44
|
#
|
|
42
45
|
# @example Substitute the new document.
|
|
43
46
|
# person.name.substitute(new_name)
|
|
44
47
|
#
|
|
45
48
|
# @param [ Document ] replacement A document to replace the target.
|
|
46
49
|
#
|
|
47
|
-
# @return [ Document, nil ] The
|
|
50
|
+
# @return [ Document, nil ] The association or nil.
|
|
48
51
|
#
|
|
49
52
|
# @since 2.0.0.rc.1
|
|
50
53
|
def substitute(replacement)
|
|
@@ -69,24 +72,24 @@ module Mongoid
|
|
|
69
72
|
|
|
70
73
|
private
|
|
71
74
|
|
|
72
|
-
# Instantiate the binding associated with this
|
|
75
|
+
# Instantiate the binding associated with this association.
|
|
73
76
|
#
|
|
74
77
|
# @example Get the binding.
|
|
75
78
|
# relation.binding([ address ])
|
|
76
79
|
#
|
|
77
|
-
# @return [ Binding ] The
|
|
80
|
+
# @return [ Binding ] The association's binding.
|
|
78
81
|
#
|
|
79
82
|
# @since 2.0.0.rc.1
|
|
80
83
|
def binding
|
|
81
84
|
Binding.new(_base, _target, _association)
|
|
82
85
|
end
|
|
83
86
|
|
|
84
|
-
# Are we able to persist this
|
|
87
|
+
# Are we able to persist this association?
|
|
85
88
|
#
|
|
86
|
-
# @example Can we persist the
|
|
89
|
+
# @example Can we persist the association?
|
|
87
90
|
# relation.persistable?
|
|
88
91
|
#
|
|
89
|
-
# @return [ true, false ] If the
|
|
92
|
+
# @return [ true, false ] If the association is persistable.
|
|
90
93
|
#
|
|
91
94
|
# @since 2.1.0
|
|
92
95
|
def persistable?
|
|
@@ -95,10 +98,10 @@ module Mongoid
|
|
|
95
98
|
|
|
96
99
|
class << self
|
|
97
100
|
|
|
98
|
-
# Returns true if the
|
|
101
|
+
# Returns true if the association is an embedded one. In this case
|
|
99
102
|
# always true.
|
|
100
103
|
#
|
|
101
|
-
# @example Is this
|
|
104
|
+
# @example Is this association embedded?
|
|
102
105
|
# Association::Embedded::EmbedsOne.embedded?
|
|
103
106
|
#
|
|
104
107
|
# @return [ true ] true.
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# encoding: utf-8
|
|
3
|
+
|
|
1
4
|
require 'mongoid/association/embedded/embeds_one/binding'
|
|
2
5
|
require 'mongoid/association/embedded/embeds_one/buildable'
|
|
3
6
|
require 'mongoid/association/embedded/embeds_one/proxy'
|
|
@@ -58,7 +61,7 @@ module Mongoid
|
|
|
58
61
|
|
|
59
62
|
# The key that is used to get the attributes for the associated object.
|
|
60
63
|
#
|
|
61
|
-
# @return [ String ] The name of the field used to store the
|
|
64
|
+
# @return [ String ] The name of the field used to store the association.
|
|
62
65
|
#
|
|
63
66
|
# @since 7.0
|
|
64
67
|
def key
|
|
@@ -72,7 +75,7 @@ module Mongoid
|
|
|
72
75
|
# @since 7.0
|
|
73
76
|
def embedded?; true; end
|
|
74
77
|
|
|
75
|
-
# Get the default validation setting for the
|
|
78
|
+
# Get the default validation setting for the association. Determines if
|
|
76
79
|
# by default a validates associated will occur.
|
|
77
80
|
#
|
|
78
81
|
# @example Get the validation default.
|
|
@@ -92,10 +95,10 @@ module Mongoid
|
|
|
92
95
|
|
|
93
96
|
# The primary key
|
|
94
97
|
#
|
|
95
|
-
# @return [ nil ] Not relevant for this
|
|
98
|
+
# @return [ nil ] Not relevant for this association
|
|
96
99
|
def primary_key; end
|
|
97
100
|
|
|
98
|
-
# Get the
|
|
101
|
+
# Get the association proxy class for this association type.
|
|
99
102
|
#
|
|
100
103
|
# @return [ Association::Embedded::EmbedsMany::Proxy ] The proxy class.
|
|
101
104
|
#
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
# encoding: utf-8
|
|
3
|
+
|
|
2
4
|
module Mongoid
|
|
3
5
|
module Association
|
|
4
6
|
|
|
5
|
-
# This module contains the core macros for defining
|
|
6
|
-
# documents. They can be either embedded or referenced
|
|
7
|
+
# This module contains the core macros for defining associations between
|
|
8
|
+
# documents. They can be either embedded or referenced.
|
|
7
9
|
module Macros
|
|
8
10
|
extend ActiveSupport::Concern
|
|
9
11
|
|
|
@@ -21,7 +23,7 @@ module Mongoid
|
|
|
21
23
|
# @example Get the associations.
|
|
22
24
|
# person.associations
|
|
23
25
|
#
|
|
24
|
-
# @return [ Hash ] The
|
|
26
|
+
# @return [ Hash ] The associations.
|
|
25
27
|
#
|
|
26
28
|
# @since 2.3.1
|
|
27
29
|
def associations
|
|
@@ -30,12 +32,12 @@ module Mongoid
|
|
|
30
32
|
|
|
31
33
|
module ClassMethods
|
|
32
34
|
|
|
33
|
-
# Adds the
|
|
35
|
+
# Adds the association back to the parent document. This macro is
|
|
34
36
|
# necessary to set the references from the child back to the parent
|
|
35
|
-
# document. If a child does not define this
|
|
37
|
+
# document. If a child does not define this association calling
|
|
36
38
|
# persistence methods on the child object will cause a save to fail.
|
|
37
39
|
#
|
|
38
|
-
# @example Define the
|
|
40
|
+
# @example Define the association.
|
|
39
41
|
#
|
|
40
42
|
# class Person
|
|
41
43
|
# include Mongoid::Document
|
|
@@ -47,18 +49,18 @@ module Mongoid
|
|
|
47
49
|
# embedded_in :person
|
|
48
50
|
# end
|
|
49
51
|
#
|
|
50
|
-
# @param [ Symbol ] name The name of the
|
|
51
|
-
# @param [ Hash ] options The
|
|
52
|
+
# @param [ Symbol ] name The name of the association.
|
|
53
|
+
# @param [ Hash ] options The association options.
|
|
52
54
|
# @param [ Proc ] block Optional block for defining extensions.
|
|
53
55
|
def embedded_in(name, options = {}, &block)
|
|
54
56
|
define_association!(__method__, name, options, &block)
|
|
55
57
|
end
|
|
56
58
|
|
|
57
|
-
# Adds the
|
|
58
|
-
# of the
|
|
59
|
+
# Adds the association from a parent document to its children. The name
|
|
60
|
+
# of the association needs to be a pluralized form of the child class
|
|
59
61
|
# name.
|
|
60
62
|
#
|
|
61
|
-
# @example Define the
|
|
63
|
+
# @example Define the association.
|
|
62
64
|
#
|
|
63
65
|
# class Person
|
|
64
66
|
# include Mongoid::Document
|
|
@@ -70,18 +72,18 @@ module Mongoid
|
|
|
70
72
|
# embedded_in :person
|
|
71
73
|
# end
|
|
72
74
|
#
|
|
73
|
-
# @param [ Symbol ] name The name of the
|
|
74
|
-
# @param [ Hash ] options The
|
|
75
|
+
# @param [ Symbol ] name The name of the association.
|
|
76
|
+
# @param [ Hash ] options The association options.
|
|
75
77
|
# @param [ Proc ] block Optional block for defining extensions.
|
|
76
78
|
def embeds_many(name, options = {}, &block)
|
|
77
79
|
define_association!(__method__, name, options, &block)
|
|
78
80
|
end
|
|
79
81
|
|
|
80
|
-
# Adds the
|
|
81
|
-
# of the
|
|
82
|
+
# Adds the association from a parent document to its child. The name
|
|
83
|
+
# of the association needs to be a singular form of the child class
|
|
82
84
|
# name.
|
|
83
85
|
#
|
|
84
|
-
# @example Define the
|
|
86
|
+
# @example Define the association.
|
|
85
87
|
#
|
|
86
88
|
# class Person
|
|
87
89
|
# include Mongoid::Document
|
|
@@ -93,17 +95,17 @@ module Mongoid
|
|
|
93
95
|
# embedded_in :person
|
|
94
96
|
# end
|
|
95
97
|
#
|
|
96
|
-
# @param [ Symbol ] name The name of the
|
|
97
|
-
# @param [ Hash ] options The
|
|
98
|
+
# @param [ Symbol ] name The name of the association.
|
|
99
|
+
# @param [ Hash ] options The association options.
|
|
98
100
|
# @param [ Proc ] block Optional block for defining extensions.
|
|
99
101
|
def embeds_one(name, options = {}, &block)
|
|
100
102
|
define_association!(__method__, name, options, &block)
|
|
101
103
|
end
|
|
102
104
|
|
|
103
|
-
# Adds a
|
|
104
|
-
# another database or collection.
|
|
105
|
+
# Adds a referenced association from the child Document to a Document
|
|
106
|
+
# in another database or collection.
|
|
105
107
|
#
|
|
106
|
-
# @example Define the
|
|
108
|
+
# @example Define the association.
|
|
107
109
|
#
|
|
108
110
|
# class Game
|
|
109
111
|
# include Mongoid::Document
|
|
@@ -115,17 +117,17 @@ module Mongoid
|
|
|
115
117
|
# has_one :game
|
|
116
118
|
# end
|
|
117
119
|
#
|
|
118
|
-
# @param [ Symbol ] name The name of the
|
|
119
|
-
# @param [ Hash ] options The
|
|
120
|
+
# @param [ Symbol ] name The name of the association.
|
|
121
|
+
# @param [ Hash ] options The association options.
|
|
120
122
|
# @param [ Proc ] block Optional block for defining extensions.
|
|
121
123
|
def belongs_to(name, options = {}, &block)
|
|
122
124
|
define_association!(__method__, name, options, &block)
|
|
123
125
|
end
|
|
124
126
|
|
|
125
|
-
# Adds a
|
|
127
|
+
# Adds a referenced association from a parent Document to many
|
|
126
128
|
# Documents in another database or collection.
|
|
127
129
|
#
|
|
128
|
-
# @example Define the
|
|
130
|
+
# @example Define the association.
|
|
129
131
|
#
|
|
130
132
|
# class Person
|
|
131
133
|
# include Mongoid::Document
|
|
@@ -137,17 +139,17 @@ module Mongoid
|
|
|
137
139
|
# belongs_to :person
|
|
138
140
|
# end
|
|
139
141
|
#
|
|
140
|
-
# @param [ Symbol ] name The name of the
|
|
141
|
-
# @param [ Hash ] options The
|
|
142
|
+
# @param [ Symbol ] name The name of the association.
|
|
143
|
+
# @param [ Hash ] options The association options.
|
|
142
144
|
# @param [ Proc ] block Optional block for defining extensions.
|
|
143
145
|
def has_many(name, options = {}, &block)
|
|
144
146
|
define_association!(__method__, name, options, &block)
|
|
145
147
|
end
|
|
146
148
|
|
|
147
|
-
# Adds a
|
|
149
|
+
# Adds a referenced many-to-many association between many of this
|
|
148
150
|
# Document and many of another Document.
|
|
149
151
|
#
|
|
150
|
-
# @example Define the
|
|
152
|
+
# @example Define the association.
|
|
151
153
|
#
|
|
152
154
|
# class Person
|
|
153
155
|
# include Mongoid::Document
|
|
@@ -159,8 +161,8 @@ module Mongoid
|
|
|
159
161
|
# has_and_belongs_to_many :people
|
|
160
162
|
# end
|
|
161
163
|
#
|
|
162
|
-
# @param [ Symbol ] name The name of the
|
|
163
|
-
# @param [ Hash ] options The
|
|
164
|
+
# @param [ Symbol ] name The name of the association.
|
|
165
|
+
# @param [ Hash ] options The association options.
|
|
164
166
|
# @param [ Proc ] block Optional block for defining extensions.
|
|
165
167
|
#
|
|
166
168
|
# @since 2.0.0.rc.1
|
|
@@ -168,10 +170,10 @@ module Mongoid
|
|
|
168
170
|
define_association!(__method__, name, options, &block)
|
|
169
171
|
end
|
|
170
172
|
|
|
171
|
-
# Adds a
|
|
172
|
-
# another database or collection.
|
|
173
|
+
# Adds a referenced association from the child Document to a Document
|
|
174
|
+
# in another database or collection.
|
|
173
175
|
#
|
|
174
|
-
# @example Define the
|
|
176
|
+
# @example Define the association.
|
|
175
177
|
#
|
|
176
178
|
# class Game
|
|
177
179
|
# include Mongoid::Document
|
|
@@ -183,8 +185,8 @@ module Mongoid
|
|
|
183
185
|
# has_one :game
|
|
184
186
|
# end
|
|
185
187
|
#
|
|
186
|
-
# @param [ Symbol ] name The name of the
|
|
187
|
-
# @param [ Hash ] options The
|
|
188
|
+
# @param [ Symbol ] name The name of the association.
|
|
189
|
+
# @param [ Hash ] options The association options.
|
|
188
190
|
# @param [ Proc ] block Optional block for defining extensions.
|
|
189
191
|
def has_one(name, options = {}, &block)
|
|
190
192
|
define_association!(__method__, name, options, &block)
|
|
@@ -1,28 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
# encoding: utf-8
|
|
3
|
+
|
|
2
4
|
module Mongoid
|
|
3
5
|
module Association
|
|
4
6
|
|
|
5
|
-
# This is the superclass for all many to one and many to many
|
|
7
|
+
# This is the superclass for all many to one and many to many association
|
|
6
8
|
# proxies.
|
|
7
9
|
class Many < Association::Proxy
|
|
10
|
+
extend Forwardable
|
|
8
11
|
include ::Enumerable
|
|
9
12
|
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
def_delegators :criteria, :avg, :max, :min, :sum
|
|
14
|
+
def_delegators :_target, :length, :size, :any?
|
|
12
15
|
|
|
13
|
-
# Is the
|
|
16
|
+
# Is the association empty?
|
|
14
17
|
#
|
|
15
|
-
# @example Is the
|
|
18
|
+
# @example Is the association empty??
|
|
16
19
|
# person.addresses.blank?
|
|
17
20
|
#
|
|
18
|
-
# @return [ true, false ] If the
|
|
21
|
+
# @return [ true, false ] If the association is empty or not.
|
|
19
22
|
#
|
|
20
23
|
# @since 2.1.0
|
|
21
24
|
def blank?
|
|
22
|
-
|
|
25
|
+
!any?
|
|
23
26
|
end
|
|
24
27
|
|
|
25
|
-
# Creates a new document on the references many
|
|
28
|
+
# Creates a new document on the references many association. This will
|
|
26
29
|
# save the document if the parent has been persisted.
|
|
27
30
|
#
|
|
28
31
|
# @example Create and save the new document.
|
|
@@ -45,7 +48,7 @@ module Mongoid
|
|
|
45
48
|
end
|
|
46
49
|
end
|
|
47
50
|
|
|
48
|
-
# Creates a new document on the references many
|
|
51
|
+
# Creates a new document on the references many association. This will
|
|
49
52
|
# save the document if the parent has been persisted and will raise an
|
|
50
53
|
# error if validation fails.
|
|
51
54
|
#
|
|
@@ -142,9 +145,9 @@ module Mongoid
|
|
|
142
145
|
klass.respond_to?(name, include_private) || super
|
|
143
146
|
end
|
|
144
147
|
|
|
145
|
-
# This is public access to the
|
|
148
|
+
# This is public access to the association's criteria.
|
|
146
149
|
#
|
|
147
|
-
# @example Get the scoped
|
|
150
|
+
# @example Get the scoped association.
|
|
148
151
|
# relation.scoped
|
|
149
152
|
#
|
|
150
153
|
# @return [ Criteria ] The scoped criteria.
|
|
@@ -163,7 +166,7 @@ module Mongoid
|
|
|
163
166
|
#
|
|
164
167
|
# @param [ Hash ] options The options to pass.
|
|
165
168
|
#
|
|
166
|
-
# @option options [ Symbol ] :include What
|
|
169
|
+
# @option options [ Symbol ] :include What associations to include
|
|
167
170
|
# @option options [ Symbol ] :only Limit the fields to only these.
|
|
168
171
|
# @option options [ Symbol ] :except Dont include these fields.
|
|
169
172
|
#
|
|
@@ -204,7 +207,7 @@ module Mongoid
|
|
|
204
207
|
#
|
|
205
208
|
# @return [ Document ] A matching document or a new/created one.
|
|
206
209
|
def find_or(method, attrs = {}, type = nil, &block)
|
|
207
|
-
attrs[
|
|
210
|
+
attrs[klass.discriminator_key] = type.discriminator_value if type
|
|
208
211
|
where(attrs).first || send(method, attrs, type, &block)
|
|
209
212
|
end
|
|
210
213
|
end
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
# encoding: utf-8
|
|
3
|
+
|
|
2
4
|
module Mongoid
|
|
3
5
|
module Association
|
|
4
6
|
module Marshalable
|
|
5
7
|
|
|
6
|
-
# Provides the data needed to Marshal.dump
|
|
8
|
+
# Provides the data needed to Marshal.dump an association proxy.
|
|
7
9
|
#
|
|
8
10
|
# @example Dump the proxy.
|
|
9
11
|
# Marshal.dump(proxy)
|
|
@@ -1,21 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
# encoding: utf-8
|
|
3
|
+
|
|
2
4
|
module Mongoid
|
|
3
5
|
module Association
|
|
4
6
|
module Nested
|
|
5
7
|
class Many
|
|
6
8
|
include Buildable
|
|
7
9
|
|
|
8
|
-
# Builds the
|
|
10
|
+
# Builds the association depending on the attributes and the options
|
|
9
11
|
# passed to the macro.
|
|
10
12
|
#
|
|
11
13
|
# This attempts to perform 3 operations, either one of an update of
|
|
12
|
-
# the existing
|
|
13
|
-
# document, or a removal of the
|
|
14
|
+
# the existing association, a replacement of the association with a new
|
|
15
|
+
# document, or a removal of the association.
|
|
14
16
|
#
|
|
15
17
|
# @example Build the nested attrs.
|
|
16
18
|
# many.build(person)
|
|
17
19
|
#
|
|
18
|
-
# @param [ Document ] parent The parent document of the
|
|
20
|
+
# @param [ Document ] parent The parent document of the association.
|
|
19
21
|
# @param [ Hash ] options The options.
|
|
20
22
|
#
|
|
21
23
|
# @return [ Array ] The attributes.
|
|
@@ -34,7 +36,7 @@ module Mongoid
|
|
|
34
36
|
end
|
|
35
37
|
|
|
36
38
|
# Create the new builder for nested attributes on one-to-many
|
|
37
|
-
#
|
|
39
|
+
# associations.
|
|
38
40
|
#
|
|
39
41
|
# @example Initialize the builder.
|
|
40
42
|
# Many.new(association, attributes, options)
|
|
@@ -57,14 +59,14 @@ module Mongoid
|
|
|
57
59
|
|
|
58
60
|
private
|
|
59
61
|
|
|
60
|
-
# Can the existing
|
|
62
|
+
# Can the existing association potentially be deleted?
|
|
61
63
|
#
|
|
62
64
|
# @example Is the document destroyable?
|
|
63
65
|
# destroyable?({ :_destroy => "1" })
|
|
64
66
|
#
|
|
65
67
|
# @param [ Hash ] attributes The attributes to pull the flag from.
|
|
66
68
|
#
|
|
67
|
-
# @return [ true, false ] If the
|
|
69
|
+
# @return [ true, false ] If the association can potentially be deleted.
|
|
68
70
|
def destroyable?(attributes)
|
|
69
71
|
destroy = attributes.delete(:_destroy)
|
|
70
72
|
Nested::DESTROY_FLAGS.include?(destroy) && allow_destroy?
|
|
@@ -106,7 +108,7 @@ module Mongoid
|
|
|
106
108
|
end
|
|
107
109
|
|
|
108
110
|
# Destroy the child document, needs to do some checking for embedded
|
|
109
|
-
#
|
|
111
|
+
# associations and delay the destroy in case parent validation fails.
|
|
110
112
|
#
|
|
111
113
|
# @api private
|
|
112
114
|
#
|
|
@@ -114,7 +116,7 @@ module Mongoid
|
|
|
114
116
|
# builder.destroy(parent, relation, doc)
|
|
115
117
|
#
|
|
116
118
|
# @param [ Document ] parent The parent document.
|
|
117
|
-
# @param [ Proxy ] relation The
|
|
119
|
+
# @param [ Proxy ] relation The association proxy.
|
|
118
120
|
# @param [ Document ] doc The doc to destroy.
|
|
119
121
|
#
|
|
120
122
|
# @since 3.0.10
|
|
@@ -134,7 +136,7 @@ module Mongoid
|
|
|
134
136
|
# @example Destroy the document.
|
|
135
137
|
# builder.destroy_document(relation, doc)
|
|
136
138
|
#
|
|
137
|
-
# @param [ Proxy ] relation The
|
|
139
|
+
# @param [ Proxy ] relation The association proxy.
|
|
138
140
|
# @param [ Document ] doc The document to delete.
|
|
139
141
|
#
|
|
140
142
|
# @since 3.0.10
|
|
@@ -163,11 +165,11 @@ module Mongoid
|
|
|
163
165
|
end
|
|
164
166
|
end
|
|
165
167
|
|
|
166
|
-
# Update nested
|
|
168
|
+
# Update nested association.
|
|
167
169
|
#
|
|
168
170
|
# @api private
|
|
169
171
|
#
|
|
170
|
-
# @example Update nested
|
|
172
|
+
# @example Update nested association.
|
|
171
173
|
# builder.update_nested_relation(parent, id, attrs)
|
|
172
174
|
#
|
|
173
175
|
# @param [ Document ] parent The parent document.
|
|
@@ -179,8 +181,8 @@ module Mongoid
|
|
|
179
181
|
first = existing.first
|
|
180
182
|
converted = first ? convert_id(first.class, id) : id
|
|
181
183
|
|
|
182
|
-
if existing.where(
|
|
183
|
-
# document exists in
|
|
184
|
+
if existing.where(_id: converted).exists?
|
|
185
|
+
# document exists in association
|
|
184
186
|
doc = existing.find(converted)
|
|
185
187
|
if destroyable?(attrs)
|
|
186
188
|
destroy(parent, existing, doc)
|
|
@@ -188,8 +190,8 @@ module Mongoid
|
|
|
188
190
|
update_document(doc, attrs)
|
|
189
191
|
end
|
|
190
192
|
else
|
|
191
|
-
# push existing document to
|
|
192
|
-
doc =
|
|
193
|
+
# push existing document to association
|
|
194
|
+
doc = association.klass.unscoped.find(converted)
|
|
193
195
|
update_document(doc, attrs)
|
|
194
196
|
existing.push(doc) unless destroyable?(attrs)
|
|
195
197
|
end
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# encoding: utf-8
|
|
3
|
+
|
|
1
4
|
module Mongoid
|
|
2
5
|
module Association
|
|
3
6
|
module Nested
|
|
@@ -22,7 +25,7 @@ module Mongoid
|
|
|
22
25
|
# @example Is there a reject proc?
|
|
23
26
|
# builder.reject?
|
|
24
27
|
#
|
|
25
|
-
# @param [ Document ] document The parent document of the
|
|
28
|
+
# @param [ Document ] document The parent document of the association
|
|
26
29
|
# @param [ Hash ] attrs The attributes to check for rejection.
|
|
27
30
|
#
|
|
28
31
|
# @return [ true, false ] True and call proc or method if rejectable, false if not.
|
|
@@ -40,7 +43,7 @@ module Mongoid
|
|
|
40
43
|
end
|
|
41
44
|
|
|
42
45
|
# Determines if only updates can occur. Only valid for one-to-one
|
|
43
|
-
#
|
|
46
|
+
# associations.
|
|
44
47
|
#
|
|
45
48
|
# @example Is this update only?
|
|
46
49
|
# builder.update_only?
|
|
@@ -69,4 +72,4 @@ module Mongoid
|
|
|
69
72
|
end
|
|
70
73
|
end
|
|
71
74
|
end
|
|
72
|
-
end
|
|
75
|
+
end
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
# encoding: utf-8
|
|
3
|
+
|
|
2
4
|
module Mongoid
|
|
3
5
|
module Association
|
|
4
6
|
module Nested
|
|
@@ -8,15 +10,15 @@ module Mongoid
|
|
|
8
10
|
attr_accessor :destroy
|
|
9
11
|
|
|
10
12
|
|
|
11
|
-
# Builds the
|
|
13
|
+
# Builds the association depending on the attributes and the options
|
|
12
14
|
# passed to the macro.
|
|
13
15
|
#
|
|
14
16
|
# @example Build a 1-1 nested document.
|
|
15
17
|
# one.build(person, as: :admin)
|
|
16
18
|
#
|
|
17
19
|
# @note This attempts to perform 3 operations, either one of an update of
|
|
18
|
-
# the existing
|
|
19
|
-
# document, or a removal of the
|
|
20
|
+
# the existing association, a replacement of the association with a new
|
|
21
|
+
# document, or a removal of the association.
|
|
20
22
|
#
|
|
21
23
|
# @param [ Document ] parent The parent document.
|
|
22
24
|
#
|
|
@@ -37,7 +39,7 @@ module Mongoid
|
|
|
37
39
|
end
|
|
38
40
|
|
|
39
41
|
# Create the new builder for nested attributes on one-to-one
|
|
40
|
-
#
|
|
42
|
+
# associations.
|
|
41
43
|
#
|
|
42
44
|
# @example Instantiate the builder.
|
|
43
45
|
# One.new(association, attributes)
|
|
@@ -58,7 +60,7 @@ module Mongoid
|
|
|
58
60
|
private
|
|
59
61
|
|
|
60
62
|
# Is the id in the attribtues acceptable for allowing an update to
|
|
61
|
-
# the existing
|
|
63
|
+
# the existing association?
|
|
62
64
|
#
|
|
63
65
|
# @api private
|
|
64
66
|
#
|
|
@@ -69,28 +71,30 @@ module Mongoid
|
|
|
69
71
|
#
|
|
70
72
|
# @since 2.0.0
|
|
71
73
|
def acceptable_id?
|
|
72
|
-
id =
|
|
74
|
+
id = association.klass.extract_id_field(attributes)
|
|
75
|
+
id = convert_id(existing.class, id)
|
|
73
76
|
existing._id == id || id.nil? || (existing._id != id && update_only?)
|
|
74
77
|
end
|
|
75
78
|
|
|
76
|
-
# Can the existing
|
|
79
|
+
# Can the existing association be deleted?
|
|
77
80
|
#
|
|
78
81
|
# @example Can the existing object be deleted?
|
|
79
82
|
# one.delete?
|
|
80
83
|
#
|
|
81
|
-
# @return [ true, false ] If the
|
|
84
|
+
# @return [ true, false ] If the association should be deleted.
|
|
82
85
|
#
|
|
83
86
|
# @since 2.0.0
|
|
84
87
|
def delete?
|
|
85
|
-
|
|
88
|
+
id = association.klass.extract_id_field(attributes)
|
|
89
|
+
destroyable? && !id.nil?
|
|
86
90
|
end
|
|
87
91
|
|
|
88
|
-
# Can the existing
|
|
92
|
+
# Can the existing association potentially be destroyed?
|
|
89
93
|
#
|
|
90
94
|
# @example Is the object destroyable?
|
|
91
95
|
# one.destroyable?({ :_destroy => "1" })
|
|
92
96
|
#
|
|
93
|
-
# @return [ true, false ] If the
|
|
97
|
+
# @return [ true, false ] If the association can potentially be
|
|
94
98
|
# destroyed.
|
|
95
99
|
#
|
|
96
100
|
# @since 2.0.0
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# encoding: utf-8
|
|
3
|
+
|
|
1
4
|
require 'mongoid/association/nested/nested_buildable'
|
|
2
5
|
require 'mongoid/association/nested/many'
|
|
3
6
|
require 'mongoid/association/nested/one'
|
|
@@ -6,7 +9,7 @@ module Mongoid
|
|
|
6
9
|
module Association
|
|
7
10
|
module Nested
|
|
8
11
|
|
|
9
|
-
# The flags indicating that
|
|
12
|
+
# The flags indicating that an association can be destroyed.
|
|
10
13
|
#
|
|
11
14
|
# @since 7.0
|
|
12
15
|
DESTROY_FLAGS = [1, "1", true, "true"].freeze
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
# encoding: utf-8
|
|
3
|
+
|
|
2
4
|
module Mongoid
|
|
3
5
|
module Association
|
|
4
6
|
|
|
5
7
|
# This is the superclass for one to one relations and defines the common
|
|
6
|
-
#
|
|
8
|
+
# behavior or those proxies.
|
|
7
9
|
class One < Association::Proxy
|
|
8
10
|
|
|
9
11
|
# Clear this relation - same as calling #delete on the document.
|