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,13 +8,13 @@ module Mongoid
|
|
|
5
8
|
|
|
6
9
|
class Proxy < Association::One
|
|
7
10
|
|
|
8
|
-
# Instantiate a new embedded_in
|
|
11
|
+
# Instantiate a new embedded_in association.
|
|
9
12
|
#
|
|
10
|
-
# @example Create the new
|
|
13
|
+
# @example Create the new association.
|
|
11
14
|
# Association::Embedded::EmbeddedIn.new(person, address, association)
|
|
12
15
|
#
|
|
13
|
-
# @param [ Document ] base The document the
|
|
14
|
-
# @param [ Document ] target The target (parent) of the
|
|
16
|
+
# @param [ Document ] base The document the association hangs off of.
|
|
17
|
+
# @param [ Document ] target The target (parent) of the association.
|
|
15
18
|
# @param [ Association ] association The association metadata.
|
|
16
19
|
#
|
|
17
20
|
# @return [ In ] The proxy.
|
|
@@ -23,14 +26,14 @@ module Mongoid
|
|
|
23
26
|
end
|
|
24
27
|
|
|
25
28
|
# Substitutes the supplied target documents for the existing document
|
|
26
|
-
# in the
|
|
29
|
+
# in the association.
|
|
27
30
|
#
|
|
28
31
|
# @example Substitute the new document.
|
|
29
32
|
# person.name.substitute(new_name)
|
|
30
33
|
#
|
|
31
34
|
# @param [ Document ] replacement A document to replace the target.
|
|
32
35
|
#
|
|
33
|
-
# @return [ Document, nil ] The
|
|
36
|
+
# @return [ Document, nil ] The association or nil.
|
|
34
37
|
#
|
|
35
38
|
# @since 2.0.0.rc.1
|
|
36
39
|
def substitute(replacement)
|
|
@@ -47,7 +50,7 @@ module Mongoid
|
|
|
47
50
|
|
|
48
51
|
private
|
|
49
52
|
|
|
50
|
-
# Instantiate the binding associated with this
|
|
53
|
+
# Instantiate the binding associated with this association.
|
|
51
54
|
#
|
|
52
55
|
# @example Get the binding.
|
|
53
56
|
# binding([ address ])
|
|
@@ -73,12 +76,12 @@ module Mongoid
|
|
|
73
76
|
end
|
|
74
77
|
end
|
|
75
78
|
|
|
76
|
-
# Are we able to persist this
|
|
79
|
+
# Are we able to persist this association?
|
|
77
80
|
#
|
|
78
|
-
# @example Can we persist the
|
|
81
|
+
# @example Can we persist the association?
|
|
79
82
|
# relation.persistable?
|
|
80
83
|
#
|
|
81
|
-
# @return [ true, false ] If the
|
|
84
|
+
# @return [ true, false ] If the association is persistable.
|
|
82
85
|
#
|
|
83
86
|
# @since 2.1.0
|
|
84
87
|
def persistable?
|
|
@@ -87,10 +90,10 @@ module Mongoid
|
|
|
87
90
|
|
|
88
91
|
class << self
|
|
89
92
|
|
|
90
|
-
# Returns true if the
|
|
93
|
+
# Returns true if the association is an embedded one. In this case
|
|
91
94
|
# always true.
|
|
92
95
|
#
|
|
93
|
-
# @example Is this
|
|
96
|
+
# @example Is this association embedded?
|
|
94
97
|
# Association::Embedded::EmbeddedIn.embedded?
|
|
95
98
|
#
|
|
96
99
|
# @return [ true ] true.
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# encoding: utf-8
|
|
3
|
+
|
|
1
4
|
require 'mongoid/association/embedded/embedded_in/binding'
|
|
2
5
|
require 'mongoid/association/embedded/embedded_in/buildable'
|
|
3
6
|
require 'mongoid/association/embedded/embedded_in/proxy'
|
|
@@ -23,7 +26,7 @@ module Mongoid
|
|
|
23
26
|
:autobuild,
|
|
24
27
|
:cyclic,
|
|
25
28
|
:polymorphic,
|
|
26
|
-
:touch
|
|
29
|
+
:touch,
|
|
27
30
|
].freeze
|
|
28
31
|
|
|
29
32
|
# The complete list of valid options for this association, including
|
|
@@ -54,7 +57,7 @@ module Mongoid
|
|
|
54
57
|
|
|
55
58
|
# The primary key
|
|
56
59
|
#
|
|
57
|
-
# @return [ nil ] Not relevant for this
|
|
60
|
+
# @return [ nil ] Not relevant for this association
|
|
58
61
|
def primary_key; end
|
|
59
62
|
|
|
60
63
|
# Does this association type store the foreign key?
|
|
@@ -73,14 +76,14 @@ module Mongoid
|
|
|
73
76
|
|
|
74
77
|
# The key that is used to get the attributes for the associated object.
|
|
75
78
|
#
|
|
76
|
-
# @return [ String ] The name of the
|
|
79
|
+
# @return [ String ] The name of the association.
|
|
77
80
|
#
|
|
78
81
|
# @since 7.0
|
|
79
82
|
def key
|
|
80
83
|
@key ||= name.to_s
|
|
81
84
|
end
|
|
82
85
|
|
|
83
|
-
# Get the
|
|
86
|
+
# Get the association proxy class for this association type.
|
|
84
87
|
#
|
|
85
88
|
# @return [ Association::Embedded::EmbeddedIn::Proxy ] The proxy class.
|
|
86
89
|
#
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# encoding: utf-8
|
|
3
|
+
|
|
1
4
|
module Mongoid
|
|
2
5
|
module Association
|
|
3
6
|
module Embedded
|
|
4
7
|
class EmbedsMany
|
|
5
8
|
|
|
6
|
-
# Binding class for all embeds_many
|
|
9
|
+
# Binding class for all embeds_many associations.
|
|
7
10
|
#
|
|
8
11
|
# @since 7.0
|
|
9
12
|
class Binding
|
|
10
13
|
include Bindable
|
|
11
14
|
|
|
12
|
-
# Binds a single document with the inverse
|
|
15
|
+
# Binds a single document with the inverse association. Used
|
|
13
16
|
# specifically when appending to the proxy.
|
|
14
17
|
#
|
|
15
18
|
# @example Bind one document.
|
|
@@ -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
|
|
@@ -18,17 +21,20 @@ module Mongoid
|
|
|
18
21
|
# Builder.new(meta, attrs).build
|
|
19
22
|
#
|
|
20
23
|
# @param [ Object ] base The base object.
|
|
21
|
-
# @param [ Object ] object The object to use to build the
|
|
24
|
+
# @param [ Object ] object The object to use to build the association.
|
|
22
25
|
# @param [ String ] type Not used in this context.
|
|
26
|
+
# @param [ Hash ] selected_fields Fields which were retrieved via
|
|
27
|
+
# #only. If selected_fields are specified, fields not listed in it
|
|
28
|
+
# will not be accessible in the built documents.
|
|
23
29
|
#
|
|
24
30
|
# @return [ Array<Document ] The documents.
|
|
25
|
-
def build(base, object, type = nil)
|
|
31
|
+
def build(base, object, type = nil, selected_fields = nil)
|
|
26
32
|
return [] if object.blank?
|
|
27
33
|
return object if object.first.is_a?(Document)
|
|
28
34
|
docs = []
|
|
29
35
|
object.each do |attrs|
|
|
30
36
|
if _loading? && base.persisted?
|
|
31
|
-
docs.push(Factory.from_db(klass, attrs))
|
|
37
|
+
docs.push(Factory.from_db(klass, attrs, nil, selected_fields))
|
|
32
38
|
else
|
|
33
39
|
docs.push(Factory.build(klass, attrs))
|
|
34
40
|
end
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# encoding: utf-8
|
|
3
|
+
|
|
1
4
|
require 'mongoid/association/embedded/batchable'
|
|
2
5
|
|
|
3
6
|
module Mongoid
|
|
@@ -8,7 +11,7 @@ module Mongoid
|
|
|
8
11
|
class Proxy < Association::Many
|
|
9
12
|
include Batchable
|
|
10
13
|
|
|
11
|
-
# Appends a document or array of documents to the
|
|
14
|
+
# Appends a document or array of documents to the association. Will set
|
|
12
15
|
# the parent and update the index in the process.
|
|
13
16
|
#
|
|
14
17
|
# @example Append a document.
|
|
@@ -30,19 +33,19 @@ module Mongoid
|
|
|
30
33
|
|
|
31
34
|
alias :push :<<
|
|
32
35
|
|
|
33
|
-
# Get this
|
|
36
|
+
# Get this association as as its representation in the database.
|
|
34
37
|
#
|
|
35
|
-
# @example Convert the
|
|
38
|
+
# @example Convert the association to an attributes hash.
|
|
36
39
|
# person.addresses.as_document
|
|
37
40
|
#
|
|
38
|
-
# @return [ Array<Hash> ] The
|
|
41
|
+
# @return [ Array<Hash> ] The association as stored in the db.
|
|
39
42
|
#
|
|
40
43
|
# @since 2.0.0.rc.1
|
|
41
44
|
def as_document
|
|
42
45
|
as_attributes.collect { |attrs| BSON::Document.new(attrs) }
|
|
43
46
|
end
|
|
44
47
|
|
|
45
|
-
# Appends an array of documents to the
|
|
48
|
+
# Appends an array of documents to the association. Performs a batch
|
|
46
49
|
# insert of the documents instead of persisting one at a time.
|
|
47
50
|
#
|
|
48
51
|
# @example Concat with other documents.
|
|
@@ -58,10 +61,10 @@ module Mongoid
|
|
|
58
61
|
self
|
|
59
62
|
end
|
|
60
63
|
|
|
61
|
-
# Builds a new document in the
|
|
64
|
+
# Builds a new document in the association and appends it to the target.
|
|
62
65
|
# Takes an optional type if you want to specify a subclass.
|
|
63
66
|
#
|
|
64
|
-
# @example Build a new document on the
|
|
67
|
+
# @example Build a new document on the association.
|
|
65
68
|
# person.people.build(:name => "Bozo")
|
|
66
69
|
#
|
|
67
70
|
# @param [ Hash ] attributes The attributes to build the document with.
|
|
@@ -80,13 +83,20 @@ module Mongoid
|
|
|
80
83
|
|
|
81
84
|
alias :new :build
|
|
82
85
|
|
|
83
|
-
# Clear the
|
|
84
|
-
# already persisted.
|
|
86
|
+
# Clear the association. Will delete the documents from the db
|
|
87
|
+
# if they are already persisted.
|
|
88
|
+
#
|
|
89
|
+
# If the host document is not persisted but its _id matches a
|
|
90
|
+
# persisted document, calling #clear on an association will remove
|
|
91
|
+
# the association's documents from the database even though the
|
|
92
|
+
# set of documents in the application (as loaded in the host)
|
|
93
|
+
# is different from what is in the database, and the host may
|
|
94
|
+
# not contain any persisted documents in the association either.
|
|
85
95
|
#
|
|
86
|
-
# @example Clear the
|
|
96
|
+
# @example Clear the association.
|
|
87
97
|
# person.addresses.clear
|
|
88
98
|
#
|
|
89
|
-
# @return [ self ] The empty
|
|
99
|
+
# @return [ self ] The empty association.
|
|
90
100
|
def clear
|
|
91
101
|
batch_clear(_target.dup)
|
|
92
102
|
self
|
|
@@ -109,7 +119,7 @@ module Mongoid
|
|
|
109
119
|
# Delete the supplied document from the target. This method is proxied
|
|
110
120
|
# in order to reindex the array after the operation occurs.
|
|
111
121
|
#
|
|
112
|
-
# @example Delete the document from the
|
|
122
|
+
# @example Delete the document from the association.
|
|
113
123
|
# person.addresses.delete(address)
|
|
114
124
|
#
|
|
115
125
|
# @param [ Document ] document The document to be deleted.
|
|
@@ -136,10 +146,10 @@ module Mongoid
|
|
|
136
146
|
|
|
137
147
|
# Delete all the documents in the association without running callbacks.
|
|
138
148
|
#
|
|
139
|
-
# @example Delete all documents from the
|
|
149
|
+
# @example Delete all documents from the association.
|
|
140
150
|
# person.addresses.delete_all
|
|
141
151
|
#
|
|
142
|
-
# @example Conditionally delete documents from the
|
|
152
|
+
# @example Conditionally delete documents from the association.
|
|
143
153
|
# person.addresses.delete_all({ :street => "Bond" })
|
|
144
154
|
#
|
|
145
155
|
# @param [ Hash ] conditions Conditions on which documents to delete.
|
|
@@ -156,7 +166,7 @@ module Mongoid
|
|
|
156
166
|
# doc.state == "GA"
|
|
157
167
|
# end
|
|
158
168
|
#
|
|
159
|
-
# @return [ Many, Enumerator ] The
|
|
169
|
+
# @return [ Many, Enumerator ] The association or an enumerator if no
|
|
160
170
|
# block was provided.
|
|
161
171
|
#
|
|
162
172
|
# @since 3.1.0
|
|
@@ -174,10 +184,10 @@ module Mongoid
|
|
|
174
184
|
|
|
175
185
|
# Destroy all the documents in the association whilst running callbacks.
|
|
176
186
|
#
|
|
177
|
-
# @example Destroy all documents from the
|
|
187
|
+
# @example Destroy all documents from the association.
|
|
178
188
|
# person.addresses.destroy_all
|
|
179
189
|
#
|
|
180
|
-
# @example Conditionally destroy documents from the
|
|
190
|
+
# @example Conditionally destroy documents from the association.
|
|
181
191
|
# person.addresses.destroy_all({ :street => "Bond" })
|
|
182
192
|
#
|
|
183
193
|
# @param [ Hash ] conditions Conditions on which documents to destroy.
|
|
@@ -187,7 +197,7 @@ module Mongoid
|
|
|
187
197
|
remove_all(conditions, :destroy)
|
|
188
198
|
end
|
|
189
199
|
|
|
190
|
-
# Determine if any documents in this
|
|
200
|
+
# Determine if any documents in this association exist in the database.
|
|
191
201
|
#
|
|
192
202
|
# @example Are there persisted documents?
|
|
193
203
|
# person.posts.exists?
|
|
@@ -213,13 +223,13 @@ module Mongoid
|
|
|
213
223
|
criteria.find(*args)
|
|
214
224
|
end
|
|
215
225
|
|
|
216
|
-
# Instantiate a new embeds_many
|
|
226
|
+
# Instantiate a new embeds_many association.
|
|
217
227
|
#
|
|
218
|
-
# @example Create the new
|
|
228
|
+
# @example Create the new association.
|
|
219
229
|
# Many.new(person, addresses, association)
|
|
220
230
|
#
|
|
221
|
-
# @param [ Document ] base The document this
|
|
222
|
-
# @param [ Array<Document> ] target The child documents of the
|
|
231
|
+
# @param [ Document ] base The document this association hangs off of.
|
|
232
|
+
# @param [ Array<Document> ] target The child documents of the association.
|
|
223
233
|
# @param [ Association ] association The association metadata
|
|
224
234
|
#
|
|
225
235
|
# @return [ Many ] The proxy.
|
|
@@ -234,7 +244,7 @@ module Mongoid
|
|
|
234
244
|
end
|
|
235
245
|
end
|
|
236
246
|
|
|
237
|
-
# Get all the documents in the
|
|
247
|
+
# Get all the documents in the association that are loaded into memory.
|
|
238
248
|
#
|
|
239
249
|
# @example Get the in memory documents.
|
|
240
250
|
# relation.in_memory
|
|
@@ -246,7 +256,7 @@ module Mongoid
|
|
|
246
256
|
_target
|
|
247
257
|
end
|
|
248
258
|
|
|
249
|
-
# Pop documents off the
|
|
259
|
+
# Pop documents off the association. This can be a single document or
|
|
250
260
|
# multiples, and will automatically persist the changes.
|
|
251
261
|
#
|
|
252
262
|
# @example Pop a single document.
|
|
@@ -271,7 +281,7 @@ module Mongoid
|
|
|
271
281
|
end
|
|
272
282
|
end
|
|
273
283
|
|
|
274
|
-
# Shift documents off the
|
|
284
|
+
# Shift documents off the association. This can be a single document or
|
|
275
285
|
# multiples, and will automatically persist the changes.
|
|
276
286
|
#
|
|
277
287
|
# @example Shift a single document.
|
|
@@ -297,12 +307,12 @@ module Mongoid
|
|
|
297
307
|
# Substitutes the supplied target documents for the existing documents
|
|
298
308
|
# in the relation.
|
|
299
309
|
#
|
|
300
|
-
# @example Substitute the
|
|
310
|
+
# @example Substitute the association's target.
|
|
301
311
|
# person.addresses.substitute([ address ])
|
|
302
312
|
#
|
|
303
313
|
# @param [ Array<Document> ] docs The replacement docs.
|
|
304
314
|
#
|
|
305
|
-
# @return [ Many ] The proxied
|
|
315
|
+
# @return [ Many ] The proxied association.
|
|
306
316
|
#
|
|
307
317
|
# @since 2.0.0.rc.1
|
|
308
318
|
def substitute(docs)
|
|
@@ -310,13 +320,13 @@ module Mongoid
|
|
|
310
320
|
self
|
|
311
321
|
end
|
|
312
322
|
|
|
313
|
-
# Return the
|
|
323
|
+
# Return the association with all previous scoping removed. This is the
|
|
314
324
|
# exact representation of the docs in the database.
|
|
315
325
|
#
|
|
316
326
|
# @example Get the unscoped documents.
|
|
317
327
|
# person.addresses.unscoped
|
|
318
328
|
#
|
|
319
|
-
# @return [ Criteria ] The unscoped
|
|
329
|
+
# @return [ Criteria ] The unscoped association.
|
|
320
330
|
#
|
|
321
331
|
# @since 2.4.0
|
|
322
332
|
def unscoped
|
|
@@ -329,7 +339,7 @@ module Mongoid
|
|
|
329
339
|
private
|
|
330
340
|
|
|
331
341
|
def object_already_related?(document)
|
|
332
|
-
_target.any? { |existing| existing.
|
|
342
|
+
_target.any? { |existing| existing._id && existing === document }
|
|
333
343
|
end
|
|
334
344
|
|
|
335
345
|
# Appends the document to the target array, updating the index on the
|
|
@@ -352,7 +362,7 @@ module Mongoid
|
|
|
352
362
|
execute_callback :after_add, document
|
|
353
363
|
end
|
|
354
364
|
|
|
355
|
-
# Instantiate the binding associated with this
|
|
365
|
+
# Instantiate the binding associated with this association.
|
|
356
366
|
#
|
|
357
367
|
# @example Create the binding.
|
|
358
368
|
# relation.binding([ address ])
|
|
@@ -364,15 +374,12 @@ module Mongoid
|
|
|
364
374
|
Binding.new(_base, _target, _association)
|
|
365
375
|
end
|
|
366
376
|
|
|
367
|
-
# Returns the
|
|
368
|
-
# to target.
|
|
369
|
-
#
|
|
370
|
-
# @example Get a criteria for the relation.
|
|
371
|
-
# relation.criteria
|
|
377
|
+
# Returns the +Criteria+ object for the target class with its
|
|
378
|
+
# documents set to the list of target documents in the association.
|
|
372
379
|
#
|
|
373
380
|
# @return [ Criteria ] A new criteria.
|
|
374
381
|
def criteria
|
|
375
|
-
|
|
382
|
+
_association.criteria(_base, _target)
|
|
376
383
|
end
|
|
377
384
|
|
|
378
385
|
# Deletes one document from the target and unscoped.
|
|
@@ -391,7 +398,7 @@ module Mongoid
|
|
|
391
398
|
reindex
|
|
392
399
|
end
|
|
393
400
|
|
|
394
|
-
# Integrate the document into the
|
|
401
|
+
# Integrate the document into the association. will set its metadata and
|
|
395
402
|
# attempt to bind the inverse.
|
|
396
403
|
#
|
|
397
404
|
# @example Integrate the document.
|
|
@@ -415,19 +422,19 @@ module Mongoid
|
|
|
415
422
|
# @param [ Proc ] block Optional block to pass.
|
|
416
423
|
#
|
|
417
424
|
# @return [ Criteria, Object ] A Criteria or return value from the target.
|
|
418
|
-
def method_missing(name, *args, &block)
|
|
425
|
+
ruby2_keywords def method_missing(name, *args, &block)
|
|
419
426
|
return super if _target.respond_to?(name)
|
|
420
427
|
klass.send(:with_scope, criteria) do
|
|
421
428
|
criteria.public_send(name, *args, &block)
|
|
422
429
|
end
|
|
423
430
|
end
|
|
424
431
|
|
|
425
|
-
# Are we able to persist this
|
|
432
|
+
# Are we able to persist this association?
|
|
426
433
|
#
|
|
427
|
-
# @example Can we persist the
|
|
434
|
+
# @example Can we persist the association?
|
|
428
435
|
# relation.persistable?
|
|
429
436
|
#
|
|
430
|
-
# @return [ true, false ] If the
|
|
437
|
+
# @return [ true, false ] If the association is persistable.
|
|
431
438
|
#
|
|
432
439
|
# @since 2.1.0
|
|
433
440
|
def persistable?
|
|
@@ -438,7 +445,7 @@ module Mongoid
|
|
|
438
445
|
# operations on the proxied target directly and the indices need to
|
|
439
446
|
# match that on the database side.
|
|
440
447
|
#
|
|
441
|
-
# @example Reindex the
|
|
448
|
+
# @example Reindex the association.
|
|
442
449
|
# person.addresses.reindex
|
|
443
450
|
#
|
|
444
451
|
# @since 2.0.0.rc.1
|
|
@@ -448,8 +455,8 @@ module Mongoid
|
|
|
448
455
|
end
|
|
449
456
|
end
|
|
450
457
|
|
|
451
|
-
# Apply the association ordering
|
|
452
|
-
# documents.
|
|
458
|
+
# Apply the association ordering and default scoping (defined on
|
|
459
|
+
# association's target class) to the provided documents.
|
|
453
460
|
#
|
|
454
461
|
# @example Apply scoping.
|
|
455
462
|
# person.addresses.scope(target)
|
|
@@ -460,17 +467,20 @@ module Mongoid
|
|
|
460
467
|
#
|
|
461
468
|
# @since 2.4.0
|
|
462
469
|
def scope(docs)
|
|
463
|
-
|
|
470
|
+
unless _association.order || _association.klass.default_scoping?
|
|
471
|
+
return docs
|
|
472
|
+
end
|
|
473
|
+
|
|
464
474
|
crit = _association.klass.order_by(_association.order)
|
|
465
475
|
crit.embedded = true
|
|
466
476
|
crit.documents = docs
|
|
467
477
|
crit.entries
|
|
468
478
|
end
|
|
469
479
|
|
|
470
|
-
# Remove all documents from the
|
|
480
|
+
# Remove all documents from the association, either with a delete or a
|
|
471
481
|
# destroy depending on what this was called through.
|
|
472
482
|
#
|
|
473
|
-
# @example Destroy documents from the
|
|
483
|
+
# @example Destroy documents from the association.
|
|
474
484
|
# relation.remove_all({ :num => 1 }, true)
|
|
475
485
|
#
|
|
476
486
|
# @param [ Hash ] conditions Conditions to filter by.
|
|
@@ -520,10 +530,10 @@ module Mongoid
|
|
|
520
530
|
|
|
521
531
|
class << self
|
|
522
532
|
|
|
523
|
-
# Returns true if the
|
|
533
|
+
# Returns true if the association is an embedded one. In this case
|
|
524
534
|
# always true.
|
|
525
535
|
#
|
|
526
|
-
# @example Is the
|
|
536
|
+
# @example Is the association embedded?
|
|
527
537
|
# Association::Embedded::EmbedsMany.embedded?
|
|
528
538
|
#
|
|
529
539
|
# @return [ true ] true.
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# encoding: utf-8
|
|
3
|
+
|
|
1
4
|
require 'mongoid/association/embedded/embeds_many/binding'
|
|
2
5
|
require 'mongoid/association/embedded/embeds_many/buildable'
|
|
3
6
|
require 'mongoid/association/embedded/embeds_many/proxy'
|
|
@@ -62,7 +65,7 @@ module Mongoid
|
|
|
62
65
|
|
|
63
66
|
# The key that is used to get the attributes for the associated object.
|
|
64
67
|
#
|
|
65
|
-
# @return [ String ] The name of the field used to store the
|
|
68
|
+
# @return [ String ] The name of the field used to store the association.
|
|
66
69
|
#
|
|
67
70
|
# @since 7.0
|
|
68
71
|
def key
|
|
@@ -76,7 +79,7 @@ module Mongoid
|
|
|
76
79
|
# @since 7.0
|
|
77
80
|
def embedded?; true; end
|
|
78
81
|
|
|
79
|
-
# Get the default validation setting for the
|
|
82
|
+
# Get the default validation setting for the association. Determines if
|
|
80
83
|
# by default a validates associated will occur.
|
|
81
84
|
#
|
|
82
85
|
# @example Get the validation default.
|
|
@@ -96,10 +99,10 @@ module Mongoid
|
|
|
96
99
|
|
|
97
100
|
# The primary key
|
|
98
101
|
#
|
|
99
|
-
# @return [ nil ] Not relevant for this
|
|
102
|
+
# @return [ nil ] Not relevant for this association
|
|
100
103
|
def primary_key; end
|
|
101
104
|
|
|
102
|
-
# Get the
|
|
105
|
+
# Get the association proxy class for this association type.
|
|
103
106
|
#
|
|
104
107
|
# @return [ Association::Embedded::EmbedsMany::Proxy ] The proxy class.
|
|
105
108
|
#
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# encoding: utf-8
|
|
3
|
+
|
|
1
4
|
module Mongoid
|
|
2
5
|
module Association
|
|
3
6
|
module Embedded
|
|
4
7
|
class EmbedsOne
|
|
5
8
|
|
|
6
|
-
# Binding class for all embeds_one
|
|
9
|
+
# Binding class for all embeds_one associations.
|
|
7
10
|
#
|
|
8
11
|
# @since 7.0
|
|
9
12
|
class Binding
|
|
10
13
|
include Bindable
|
|
11
14
|
|
|
12
|
-
# Binds the base object to the inverse of the
|
|
15
|
+
# Binds the base object to the inverse of the association. This is so we
|
|
13
16
|
# are referenced to the actual objects themselves on both sides.
|
|
14
17
|
#
|
|
15
18
|
# This case sets the association metadata on the inverse object as well as the
|
|
@@ -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
|
|
@@ -10,21 +13,24 @@ module Mongoid
|
|
|
10
13
|
include Threaded::Lifecycle
|
|
11
14
|
|
|
12
15
|
# Builds the document out of the attributes using the provided
|
|
13
|
-
# association metadata on the
|
|
16
|
+
# association metadata on the association. Instantiates through the factory in order
|
|
14
17
|
# to make sure subclasses and allocation are used if fitting.
|
|
15
18
|
#
|
|
16
19
|
# @example Build the document.
|
|
17
20
|
# Builder.new(meta, attrs).build
|
|
18
21
|
#
|
|
19
|
-
# @param [ Document ] base The document this
|
|
22
|
+
# @param [ Document ] base The document this association hangs off of.
|
|
20
23
|
# @param [ Document ] object The related document.
|
|
21
24
|
# @param [ String ] _type Not used in this context.
|
|
25
|
+
# @param [ Hash ] selected_fields Fields which were retrieved via
|
|
26
|
+
# #only. If selected_fields are specified, fields not listed in it
|
|
27
|
+
# will not be accessible in the built document.
|
|
22
28
|
#
|
|
23
29
|
# @return [ Document ] A single document.
|
|
24
|
-
def build(base, object, _type = nil)
|
|
30
|
+
def build(base, object, _type = nil, selected_fields = nil)
|
|
25
31
|
return object unless object.is_a?(Hash)
|
|
26
32
|
if _loading? && base.persisted?
|
|
27
|
-
Factory.from_db(klass, object)
|
|
33
|
+
Factory.from_db(klass, object, nil, selected_fields)
|
|
28
34
|
else
|
|
29
35
|
Factory.build(klass, object)
|
|
30
36
|
end
|