mongoid 7.0.13 → 7.1.0.rc0
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.tar.gz.sig +0 -0
- data/CHANGELOG.md +7 -7
- data/LICENSE +1 -1
- data/README.md +24 -18
- data/Rakefile +7 -45
- data/lib/config/locales/en.yml +56 -47
- data/lib/mongoid.rb +8 -1
- data/lib/mongoid/association.rb +9 -6
- data/lib/mongoid/association/accessors.rb +95 -52
- data/lib/mongoid/association/bindable.rb +7 -5
- data/lib/mongoid/association/builders.rb +4 -3
- data/lib/mongoid/association/constrainable.rb +4 -2
- data/lib/mongoid/association/depending.rb +5 -2
- data/lib/mongoid/association/eager_loadable.rb +2 -0
- data/lib/mongoid/association/embedded.rb +3 -0
- data/lib/mongoid/association/embedded/batchable.rb +4 -2
- data/lib/mongoid/association/embedded/cyclic.rb +8 -6
- data/lib/mongoid/association/embedded/embedded_in.rb +6 -3
- 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/embeds_many.rb +8 -6
- 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 +41 -38
- data/lib/mongoid/association/embedded/embeds_one.rb +8 -6
- 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/macros.rb +38 -36
- data/lib/mongoid/association/many.rb +11 -9
- data/lib/mongoid/association/marshalable.rb +3 -1
- data/lib/mongoid/association/nested.rb +4 -1
- data/lib/mongoid/association/nested/many.rb +17 -15
- data/lib/mongoid/association/nested/nested_buildable.rb +6 -3
- data/lib/mongoid/association/nested/one.rb +11 -9
- data/lib/mongoid/association/one.rb +3 -1
- data/lib/mongoid/association/options.rb +9 -6
- data/lib/mongoid/association/proxy.rb +12 -10
- data/lib/mongoid/association/referenced.rb +3 -0
- data/lib/mongoid/association/referenced/auto_save.rb +4 -1
- data/lib/mongoid/association/referenced/belongs_to.rb +6 -3
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +3 -1
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +6 -3
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +2 -0
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +16 -14
- data/lib/mongoid/association/referenced/counter_cache.rb +2 -0
- data/lib/mongoid/association/referenced/eager.rb +9 -7
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +13 -6
- 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 +25 -18
- data/lib/mongoid/association/referenced/has_many.rb +7 -4
- 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 +30 -3
- data/lib/mongoid/association/referenced/has_many/proxy.rb +43 -41
- data/lib/mongoid/association/referenced/has_one.rb +5 -2
- data/lib/mongoid/association/referenced/has_one/binding.rb +4 -2
- data/lib/mongoid/association/referenced/has_one/buildable.rb +8 -1
- data/lib/mongoid/association/referenced/has_one/eager.rb +2 -0
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +11 -9
- data/lib/mongoid/association/referenced/has_one/proxy.rb +17 -15
- data/lib/mongoid/association/referenced/syncable.rb +7 -5
- data/lib/mongoid/association/reflections.rb +7 -5
- data/lib/mongoid/association/relatable.rb +17 -14
- data/lib/mongoid/atomic.rb +5 -13
- data/lib/mongoid/atomic/modifiers.rb +24 -1
- data/lib/mongoid/atomic/paths.rb +2 -0
- data/lib/mongoid/atomic/paths/embedded.rb +2 -0
- 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/root.rb +4 -2
- data/lib/mongoid/attributes.rb +35 -49
- data/lib/mongoid/attributes/dynamic.rb +2 -0
- data/lib/mongoid/attributes/nested.rb +7 -5
- data/lib/mongoid/attributes/processing.rb +8 -6
- data/lib/mongoid/attributes/readonly.rb +3 -1
- data/lib/mongoid/cacheable.rb +3 -1
- data/lib/mongoid/changeable.rb +3 -1
- data/lib/mongoid/clients.rb +2 -0
- data/lib/mongoid/clients/factory.rb +1 -0
- data/lib/mongoid/clients/options.rb +2 -0
- data/lib/mongoid/clients/sessions.rb +7 -20
- data/lib/mongoid/clients/storage_options.rb +2 -0
- data/lib/mongoid/clients/validators.rb +2 -0
- data/lib/mongoid/clients/validators/storage.rb +2 -0
- data/lib/mongoid/composable.rb +4 -2
- data/lib/mongoid/config.rb +15 -2
- data/lib/mongoid/config/environment.rb +2 -0
- data/lib/mongoid/config/options.rb +17 -12
- data/lib/mongoid/config/validators.rb +2 -0
- data/lib/mongoid/config/validators/client.rb +2 -0
- data/lib/mongoid/config/validators/option.rb +2 -0
- data/lib/mongoid/contextual.rb +2 -0
- data/lib/mongoid/contextual/aggregable/memory.rb +3 -1
- data/lib/mongoid/contextual/aggregable/mongo.rb +3 -1
- data/lib/mongoid/contextual/atomic.rb +24 -6
- data/lib/mongoid/contextual/command.rb +2 -0
- data/lib/mongoid/contextual/geo_near.rb +2 -1
- data/lib/mongoid/contextual/map_reduce.rb +2 -0
- data/lib/mongoid/contextual/memory.rb +4 -2
- data/lib/mongoid/contextual/mongo.rb +4 -0
- data/lib/mongoid/contextual/none.rb +2 -0
- data/lib/mongoid/contextual/queryable.rb +2 -0
- data/lib/mongoid/copyable.rb +3 -1
- data/lib/mongoid/criteria.rb +3 -7
- data/lib/mongoid/criteria/findable.rb +11 -1
- 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 +3 -2
- data/lib/mongoid/criteria/options.rb +2 -0
- data/lib/mongoid/criteria/permission.rb +2 -0
- data/lib/mongoid/criteria/queryable.rb +7 -2
- data/lib/mongoid/criteria/queryable/aggregable.rb +2 -0
- data/lib/mongoid/criteria/queryable/expandable.rb +93 -0
- data/lib/mongoid/criteria/queryable/extensions.rb +2 -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 +2 -0
- 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 +4 -2
- 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 +7 -5
- 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 -13
- data/lib/mongoid/criteria/queryable/key.rb +34 -6
- data/lib/mongoid/criteria/queryable/macroable.rb +3 -1
- data/lib/mongoid/criteria/queryable/mergeable.rb +86 -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 +2 -0
- data/lib/mongoid/criteria/queryable/selectable.rb +264 -87
- data/lib/mongoid/criteria/queryable/selector.rb +38 -5
- data/lib/mongoid/criteria/queryable/smash.rb +2 -0
- data/lib/mongoid/criteria/queryable/storable.rb +228 -0
- data/lib/mongoid/criteria/scopable.rb +2 -0
- data/lib/mongoid/document.rb +4 -3
- data/lib/mongoid/equality.rb +3 -2
- data/lib/mongoid/errors.rb +3 -0
- 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 +3 -2
- 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 +4 -2
- 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_option.rb +2 -0
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +2 -0
- data/lib/mongoid/errors/invalid_field.rb +2 -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_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 +2 -0
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +3 -1
- data/lib/mongoid/errors/no_client_config.rb +2 -0
- 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 +2 -0
- 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/evolvable.rb +3 -1
- data/lib/mongoid/extensions.rb +2 -0
- data/lib/mongoid/extensions/array.rb +23 -6
- data/lib/mongoid/extensions/big_decimal.rb +2 -0
- data/lib/mongoid/extensions/boolean.rb +2 -0
- 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 +2 -0
- data/lib/mongoid/extensions/float.rb +5 -3
- data/lib/mongoid/extensions/hash.rb +49 -11
- 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 +3 -1
- 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 +2 -0
- data/lib/mongoid/factory.rb +28 -5
- data/lib/mongoid/fields.rb +4 -3
- data/lib/mongoid/fields/foreign_key.rb +3 -1
- data/lib/mongoid/fields/localized.rb +2 -0
- data/lib/mongoid/fields/standard.rb +4 -2
- data/lib/mongoid/fields/validators.rb +2 -0
- data/lib/mongoid/fields/validators/macro.rb +13 -2
- data/lib/mongoid/findable.rb +6 -2
- data/lib/mongoid/indexable.rb +3 -1
- data/lib/mongoid/indexable/specification.rb +3 -1
- data/lib/mongoid/indexable/validators/options.rb +2 -0
- data/lib/mongoid/inspectable.rb +3 -1
- data/lib/mongoid/interceptable.rb +5 -5
- data/lib/mongoid/loggable.rb +13 -7
- data/lib/mongoid/matchable.rb +2 -0
- data/lib/mongoid/matchable/all.rb +2 -0
- data/lib/mongoid/matchable/and.rb +2 -0
- data/lib/mongoid/matchable/default.rb +2 -0
- data/lib/mongoid/matchable/elem_match.rb +2 -0
- data/lib/mongoid/matchable/eq.rb +1 -0
- data/lib/mongoid/matchable/exists.rb +2 -0
- data/lib/mongoid/matchable/gt.rb +2 -0
- data/lib/mongoid/matchable/gte.rb +2 -0
- data/lib/mongoid/matchable/in.rb +2 -0
- data/lib/mongoid/matchable/lt.rb +2 -0
- data/lib/mongoid/matchable/lte.rb +2 -0
- data/lib/mongoid/matchable/ne.rb +2 -0
- data/lib/mongoid/matchable/nin.rb +2 -0
- data/lib/mongoid/matchable/nor.rb +2 -1
- data/lib/mongoid/matchable/or.rb +2 -0
- data/lib/mongoid/matchable/regexp.rb +5 -2
- data/lib/mongoid/matchable/size.rb +2 -0
- data/lib/mongoid/persistable.rb +133 -15
- data/lib/mongoid/persistable/creatable.rb +3 -1
- data/lib/mongoid/persistable/deletable.rb +3 -1
- data/lib/mongoid/persistable/destroyable.rb +3 -1
- 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 +5 -12
- 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 +3 -1
- data/lib/mongoid/persistable/upsertable.rb +3 -1
- data/lib/mongoid/persistence_context.rb +27 -15
- data/lib/mongoid/positional.rb +2 -0
- data/lib/mongoid/query_cache.rb +26 -69
- data/lib/mongoid/railtie.rb +3 -1
- data/lib/mongoid/railties/controller_runtime.rb +4 -1
- data/lib/mongoid/railties/database.rake +2 -0
- data/lib/mongoid/reloadable.rb +4 -2
- data/lib/mongoid/scopable.rb +2 -1
- data/lib/mongoid/selectable.rb +3 -1
- data/lib/mongoid/serializable.rb +13 -11
- data/lib/mongoid/shardable.rb +3 -1
- data/lib/mongoid/stateful.rb +3 -1
- data/lib/mongoid/tasks/database.rake +2 -0
- data/lib/mongoid/tasks/database.rb +2 -0
- data/lib/mongoid/threaded.rb +2 -0
- data/lib/mongoid/threaded/lifecycle.rb +2 -0
- data/lib/mongoid/timestamps.rb +3 -1
- data/lib/mongoid/timestamps/created.rb +3 -1
- data/lib/mongoid/timestamps/created/short.rb +2 -0
- data/lib/mongoid/timestamps/short.rb +2 -0
- data/lib/mongoid/timestamps/timeless.rb +3 -1
- data/lib/mongoid/timestamps/updated.rb +3 -1
- data/lib/mongoid/timestamps/updated/short.rb +2 -0
- data/lib/mongoid/touchable.rb +20 -12
- data/lib/mongoid/traversable.rb +4 -2
- data/lib/mongoid/validatable.rb +7 -5
- data/lib/mongoid/validatable/associated.rb +4 -2
- 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 +4 -2
- data/lib/mongoid/validatable/queryable.rb +2 -0
- data/lib/mongoid/validatable/uniqueness.rb +5 -3
- data/lib/mongoid/version.rb +2 -1
- data/lib/rails/generators/mongoid/config/config_generator.rb +3 -8
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +12 -6
- data/lib/rails/generators/mongoid/model/model_generator.rb +3 -1
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +1 -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/app/models/account.rb +3 -0
- data/spec/app/models/acolyte.rb +3 -0
- data/spec/app/models/actor.rb +3 -0
- data/spec/app/models/actress.rb +3 -0
- data/spec/app/models/address.rb +3 -0
- data/spec/app/models/address_component.rb +3 -0
- data/spec/app/models/address_number.rb +3 -0
- data/spec/app/models/agency.rb +3 -0
- data/spec/app/models/agent.rb +3 -0
- data/spec/app/models/album.rb +3 -0
- data/spec/app/models/alert.rb +3 -0
- data/spec/app/models/animal.rb +3 -0
- data/spec/app/models/answer.rb +3 -0
- data/spec/app/models/appointment.rb +3 -0
- data/spec/app/models/array_field.rb +1 -0
- data/spec/app/models/article.rb +3 -0
- data/spec/app/models/artist.rb +3 -0
- data/spec/app/models/artwork.rb +3 -0
- data/spec/app/models/audio.rb +3 -0
- data/spec/app/models/augmentation.rb +3 -0
- data/spec/app/models/author.rb +3 -0
- data/spec/app/models/baby.rb +3 -0
- data/spec/app/models/band.rb +3 -0
- data/spec/app/models/bar.rb +3 -0
- data/spec/app/models/basic.rb +3 -0
- data/spec/app/models/bed.rb +3 -0
- data/spec/app/models/big_palette.rb +3 -0
- data/spec/app/models/birthday.rb +3 -0
- data/spec/app/models/bomb.rb +3 -0
- data/spec/app/models/book.rb +3 -0
- data/spec/app/models/breed.rb +3 -0
- data/spec/app/models/browser.rb +3 -0
- data/spec/app/models/building.rb +3 -0
- data/spec/app/models/building_address.rb +3 -0
- data/spec/app/models/bus.rb +3 -0
- data/spec/app/models/business.rb +3 -0
- data/spec/app/models/callback_test.rb +3 -0
- data/spec/app/models/canvas.rb +3 -0
- data/spec/app/models/car.rb +3 -0
- data/spec/app/models/cat.rb +3 -0
- data/spec/app/models/category.rb +3 -0
- data/spec/app/models/child.rb +3 -0
- data/spec/app/models/child_doc.rb +3 -0
- data/spec/app/models/church.rb +3 -0
- data/spec/app/models/circle.rb +3 -0
- data/spec/app/models/circuit.rb +3 -0
- data/spec/app/models/circus.rb +3 -0
- data/spec/app/models/code.rb +3 -0
- data/spec/app/models/comment.rb +3 -0
- data/spec/app/models/company.rb +3 -0
- data/spec/app/models/consumption_period.rb +3 -0
- data/spec/app/models/contextable_item.rb +3 -0
- data/spec/app/models/contractor.rb +3 -0
- data/spec/app/models/cookie.rb +3 -0
- data/spec/app/models/country_code.rb +3 -0
- data/spec/app/models/courier_job.rb +3 -0
- data/spec/app/models/definition.rb +3 -0
- data/spec/app/models/description.rb +3 -0
- data/spec/app/models/dictionary.rb +3 -0
- data/spec/app/models/division.rb +3 -0
- data/spec/app/models/doctor.rb +3 -0
- data/spec/app/models/dog.rb +3 -0
- data/spec/app/models/dokument.rb +3 -0
- data/spec/app/models/draft.rb +3 -0
- data/spec/app/models/dragon.rb +3 -0
- data/spec/app/models/driver.rb +3 -0
- data/spec/app/models/drug.rb +3 -0
- data/spec/app/models/dungeon.rb +3 -0
- data/spec/app/models/edit.rb +3 -0
- data/spec/app/models/email.rb +3 -0
- data/spec/app/models/employer.rb +3 -0
- data/spec/app/models/entry.rb +3 -0
- data/spec/app/models/eraser.rb +3 -0
- data/spec/app/models/even.rb +3 -0
- data/spec/app/models/event.rb +3 -0
- data/spec/app/models/exhibition.rb +3 -0
- data/spec/app/models/exhibitor.rb +3 -0
- data/spec/app/models/explosion.rb +3 -0
- data/spec/app/models/eye.rb +3 -0
- data/spec/app/models/eye_bowl.rb +3 -0
- data/spec/app/models/face.rb +3 -0
- data/spec/app/models/favorite.rb +3 -0
- data/spec/app/models/filesystem.rb +3 -0
- data/spec/app/models/fire_hydrant.rb +3 -0
- data/spec/app/models/firefox.rb +3 -0
- data/spec/app/models/fish.rb +3 -0
- data/spec/app/models/folder.rb +3 -0
- data/spec/app/models/folder_item.rb +3 -0
- data/spec/app/models/fruits.rb +3 -0
- data/spec/app/models/game.rb +3 -0
- data/spec/app/models/ghost.rb +3 -0
- data/spec/app/models/home.rb +3 -0
- data/spec/app/models/house.rb +3 -0
- data/spec/app/models/html_writer.rb +3 -0
- data/spec/app/models/id_key.rb +3 -0
- data/spec/app/models/image.rb +3 -0
- data/spec/app/models/implant.rb +3 -0
- data/spec/app/models/item.rb +3 -0
- data/spec/app/models/jar.rb +3 -0
- data/spec/app/models/kaleidoscope.rb +3 -0
- data/spec/app/models/kangaroo.rb +4 -1
- data/spec/app/models/label.rb +3 -0
- data/spec/app/models/language.rb +3 -0
- data/spec/app/models/lat_lng.rb +3 -0
- data/spec/app/models/league.rb +3 -0
- data/spec/app/models/learner.rb +3 -0
- data/spec/app/models/line_item.rb +3 -0
- data/spec/app/models/location.rb +3 -0
- data/spec/app/models/login.rb +3 -0
- data/spec/app/models/manufacturer.rb +3 -0
- data/spec/app/models/meat.rb +3 -0
- data/spec/app/models/membership.rb +3 -0
- data/spec/app/models/message.rb +3 -0
- data/spec/app/models/minim.rb +1 -1
- data/spec/app/models/mixed_drink.rb +3 -0
- data/spec/app/models/movie.rb +3 -0
- data/spec/app/models/my_hash.rb +3 -0
- data/spec/app/models/name.rb +3 -0
- data/spec/app/models/name_only.rb +9 -0
- data/spec/app/models/node.rb +3 -0
- data/spec/app/models/note.rb +3 -0
- data/spec/app/models/odd.rb +3 -0
- data/spec/app/models/ordered_post.rb +3 -0
- data/spec/app/models/ordered_preference.rb +3 -0
- data/spec/app/models/oscar.rb +3 -0
- data/spec/app/models/other_owner_object.rb +3 -0
- data/spec/app/models/override.rb +3 -0
- data/spec/app/models/ownable.rb +3 -0
- data/spec/app/models/owner.rb +3 -0
- data/spec/app/models/pack.rb +3 -0
- data/spec/app/models/page.rb +3 -0
- data/spec/app/models/page_question.rb +3 -0
- data/spec/app/models/palette.rb +3 -0
- data/spec/app/models/parent.rb +3 -0
- data/spec/app/models/parent_doc.rb +3 -0
- data/spec/app/models/passport.rb +3 -0
- data/spec/app/models/patient.rb +3 -0
- data/spec/app/models/pdf_writer.rb +3 -0
- data/spec/app/models/pencil.rb +3 -0
- data/spec/app/models/person.rb +3 -0
- data/spec/app/models/pet.rb +3 -0
- data/spec/app/models/pet_owner.rb +3 -0
- data/spec/app/models/phone.rb +3 -0
- data/spec/app/models/pizza.rb +3 -0
- data/spec/app/models/player.rb +3 -0
- data/spec/app/models/post.rb +3 -0
- data/spec/app/models/post_genre.rb +3 -0
- data/spec/app/models/powerup.rb +3 -0
- data/spec/app/models/preference.rb +3 -0
- data/spec/app/models/princess.rb +3 -0
- data/spec/app/models/product.rb +3 -0
- data/spec/app/models/profile.rb +3 -0
- data/spec/app/models/pronunciation.rb +3 -0
- data/spec/app/models/pub.rb +3 -0
- data/spec/app/models/purchase.rb +3 -0
- data/spec/app/models/question.rb +3 -0
- data/spec/app/models/quiz.rb +3 -0
- data/spec/app/models/rating.rb +3 -0
- data/spec/app/models/record.rb +3 -0
- data/spec/app/models/registry.rb +3 -0
- data/spec/app/models/role.rb +3 -0
- data/spec/app/models/root_category.rb +3 -0
- data/spec/app/models/sandwich.rb +3 -0
- data/spec/app/models/scheduler.rb +3 -0
- data/spec/app/models/seo.rb +3 -0
- data/spec/app/models/series.rb +3 -0
- data/spec/app/models/server.rb +3 -0
- data/spec/app/models/service.rb +3 -0
- data/spec/app/models/shape.rb +3 -0
- data/spec/app/models/shelf.rb +3 -0
- data/spec/app/models/shipment_address.rb +3 -0
- data/spec/app/models/shipping_container.rb +3 -0
- data/spec/app/models/shipping_pack.rb +3 -0
- data/spec/app/models/shop.rb +3 -0
- data/spec/app/models/short_agent.rb +3 -0
- data/spec/app/models/short_quiz.rb +3 -0
- data/spec/app/models/simple.rb +3 -0
- data/spec/app/models/slave.rb +3 -0
- data/spec/app/models/song.rb +3 -0
- data/spec/app/models/sound.rb +3 -0
- data/spec/app/models/square.rb +3 -0
- data/spec/app/models/staff.rb +3 -0
- data/spec/app/models/store_as_dup_test1.rb +3 -0
- data/spec/app/models/store_as_dup_test2.rb +3 -0
- data/spec/app/models/store_as_dup_test3.rb +1 -0
- data/spec/app/models/store_as_dup_test4.rb +1 -0
- data/spec/app/models/strategy.rb +3 -0
- data/spec/app/models/sub_item.rb +3 -0
- data/spec/app/models/subscription.rb +3 -0
- data/spec/app/models/survey.rb +3 -0
- data/spec/app/models/symptom.rb +3 -0
- data/spec/app/models/tag.rb +3 -0
- data/spec/app/models/target.rb +3 -0
- data/spec/app/models/template.rb +3 -0
- data/spec/app/models/thing.rb +3 -0
- data/spec/app/models/title.rb +3 -0
- data/spec/app/models/tool.rb +3 -0
- data/spec/app/models/topping.rb +3 -0
- data/spec/app/models/track.rb +3 -0
- data/spec/app/models/translation.rb +3 -0
- data/spec/app/models/tree.rb +3 -0
- data/spec/app/models/truck.rb +3 -0
- data/spec/app/models/updatable.rb +1 -0
- data/spec/app/models/user.rb +3 -0
- data/spec/app/models/user_account.rb +3 -0
- data/spec/app/models/validation_callback.rb +3 -0
- data/spec/app/models/vehicle.rb +3 -0
- data/spec/app/models/version.rb +3 -0
- data/spec/app/models/vertex.rb +4 -1
- data/spec/app/models/vet_visit.rb +3 -0
- data/spec/app/models/video.rb +3 -0
- data/spec/app/models/video_game.rb +3 -0
- data/spec/app/models/weapon.rb +3 -0
- data/spec/app/models/wiki_page.rb +3 -0
- data/spec/app/models/word.rb +3 -0
- data/spec/app/models/word_origin.rb +3 -0
- data/spec/app/models/writer.rb +3 -0
- data/spec/config/mongoid.yml +1 -0
- data/spec/integration/associations/belongs_to_spec.rb +3 -0
- data/spec/integration/associations/embedded_spec.rb +0 -55
- 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/reverse_population_spec.rb +35 -0
- data/spec/integration/associations/reverse_population_spec_models.rb +37 -0
- data/spec/integration/criteria/default_scope_spec.rb +21 -0
- data/spec/integration/criteria/logical_spec.rb +81 -0
- data/spec/integration/i18n_fallbacks_spec.rb +90 -0
- data/spec/lite_spec_helper.rb +11 -18
- data/spec/mongoid/association/accessors_spec.rb +3 -0
- 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 +3 -0
- 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 -50
- 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 +3 -0
- data/spec/mongoid/association/embedded/embeds_many_models.rb +0 -19
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +52 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +4 -11
- 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 +3 -0
- data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +29 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +6 -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 +3 -0
- 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 +12 -0
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +3 -0
- data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +38 -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 +3 -0
- 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 +38 -154
- 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 +3 -0
- 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 +71 -146
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +1 -0
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +4 -2
- data/spec/mongoid/association/referenced/has_many_models.rb +3 -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 +3 -0
- data/spec/mongoid/association/referenced/has_one_query_spec.rb +38 -0
- data/spec/mongoid/association/referenced/has_one_spec.rb +3 -0
- 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 +3 -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 +3 -41
- data/spec/mongoid/atomic_spec.rb +3 -0
- data/spec/mongoid/attributes/nested_spec.rb +3 -0
- data/spec/mongoid/attributes/readonly_spec.rb +3 -0
- data/spec/mongoid/attributes_spec.rb +10 -260
- data/spec/mongoid/cacheable_spec.rb +3 -0
- data/spec/mongoid/changeable_spec.rb +3 -0
- data/spec/mongoid/clients/factory_spec.rb +38 -20
- data/spec/mongoid/clients/options_spec.rb +24 -13
- data/spec/mongoid/clients/sessions_spec.rb +7 -8
- data/spec/mongoid/clients/transactions_spec.rb +14 -23
- data/spec/mongoid/clients_spec.rb +5 -2
- data/spec/mongoid/composable_spec.rb +3 -0
- data/spec/mongoid/config/environment_spec.rb +3 -0
- data/spec/mongoid/config/options_spec.rb +23 -3
- data/spec/mongoid/config_spec.rb +39 -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 +113 -37
- data/spec/mongoid/contextual/geo_near_spec.rb +5 -11
- data/spec/mongoid/contextual/map_reduce_spec.rb +8 -20
- data/spec/mongoid/contextual/memory_spec.rb +3 -0
- data/spec/mongoid/contextual/mongo_spec.rb +58 -76
- data/spec/mongoid/contextual/none_spec.rb +3 -0
- data/spec/mongoid/copyable_spec.rb +3 -0
- data/spec/mongoid/copyable_spec_models.rb +3 -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 +7 -3
- 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 +135 -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 +3 -0
- 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 +3 -0
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +10 -7
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +4 -1
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +31 -35
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +4 -28
- data/spec/mongoid/criteria/queryable/key_spec.rb +3 -0
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +3 -0
- 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 +564 -156
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +950 -2165
- 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 +112 -0
- data/spec/mongoid/criteria/scopable_spec.rb +3 -0
- data/spec/mongoid/criteria_spec.rb +39 -4
- data/spec/mongoid/document_fields_spec.rb +0 -29
- data/spec/mongoid/document_query_spec.rb +39 -0
- data/spec/mongoid/document_spec.rb +3 -0
- data/spec/mongoid/equality_spec.rb +3 -0
- 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 +3 -0
- 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_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 +3 -0
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +6 -3
- data/spec/mongoid/errors/no_client_config_spec.rb +3 -0
- data/spec/mongoid/errors/no_client_database_spec.rb +3 -0
- data/spec/mongoid/errors/no_client_hosts_spec.rb +3 -0
- 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 +3 -0
- 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 +60 -26
- 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 +3 -0
- data/spec/mongoid/extensions_spec.rb +3 -0
- data/spec/mongoid/factory_spec.rb +29 -2
- data/spec/mongoid/fields/foreign_key_spec.rb +3 -0
- data/spec/mongoid/fields/localized_spec.rb +3 -0
- data/spec/mongoid/fields/standard_spec.rb +3 -0
- data/spec/mongoid/fields_spec.rb +18 -0
- data/spec/mongoid/findable_spec.rb +3 -0
- data/spec/mongoid/indexable/specification_spec.rb +3 -0
- data/spec/mongoid/indexable_spec.rb +7 -6
- data/spec/mongoid/inspectable_spec.rb +3 -0
- data/spec/mongoid/interceptable_spec.rb +3 -0
- data/spec/mongoid/loggable_spec.rb +3 -0
- data/spec/mongoid/matchable/all_spec.rb +3 -0
- data/spec/mongoid/matchable/and_spec.rb +3 -0
- data/spec/mongoid/matchable/default_spec.rb +4 -1
- data/spec/mongoid/matchable/elem_match_spec.rb +3 -0
- data/spec/mongoid/matchable/eq_spec.rb +1 -0
- data/spec/mongoid/matchable/exists_spec.rb +3 -0
- data/spec/mongoid/matchable/gt_spec.rb +3 -0
- data/spec/mongoid/matchable/gte_spec.rb +3 -0
- data/spec/mongoid/matchable/in_spec.rb +3 -0
- data/spec/mongoid/matchable/lt_spec.rb +3 -0
- data/spec/mongoid/matchable/lte_spec.rb +3 -0
- data/spec/mongoid/matchable/ne_spec.rb +3 -0
- data/spec/mongoid/matchable/nin_spec.rb +3 -0
- data/spec/mongoid/matchable/nor_spec.rb +1 -0
- data/spec/mongoid/matchable/or_spec.rb +3 -0
- data/spec/mongoid/matchable/regexp_spec.rb +5 -2
- data/spec/mongoid/matchable/size_spec.rb +3 -0
- data/spec/mongoid/matchable_spec.rb +5 -2
- data/spec/mongoid/persistable/creatable_spec.rb +3 -0
- data/spec/mongoid/persistable/deletable_spec.rb +3 -0
- data/spec/mongoid/persistable/destroyable_spec.rb +3 -0
- 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 +32 -55
- data/spec/mongoid/persistable/renamable_spec.rb +17 -0
- data/spec/mongoid/persistable/savable_spec.rb +7 -4
- data/spec/mongoid/persistable/settable_spec.rb +17 -30
- data/spec/mongoid/persistable/unsettable_spec.rb +17 -0
- data/spec/mongoid/persistable/updatable_spec.rb +3 -0
- data/spec/mongoid/persistable/upsertable_spec.rb +3 -0
- 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 +48 -0
- data/spec/mongoid/query_cache_spec.rb +12 -121
- data/spec/mongoid/relations/proxy_spec.rb +4 -1
- data/spec/mongoid/reloadable_spec.rb +3 -0
- data/spec/mongoid/scopable_spec.rb +4 -2
- data/spec/mongoid/selectable_spec.rb +3 -0
- data/spec/mongoid/serializable_spec.rb +3 -0
- data/spec/mongoid/shardable_spec.rb +3 -0
- data/spec/mongoid/stateful_spec.rb +3 -0
- data/spec/mongoid/tasks/database_rake_spec.rb +16 -13
- data/spec/mongoid/tasks/database_spec.rb +4 -1
- 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 +49 -3
- data/spec/mongoid/traversable_spec.rb +3 -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 +3 -0
- 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/spec_helper.rb +50 -15
- data/spec/support/authorization.rb +3 -0
- data/spec/support/cluster_config.rb +3 -3
- data/spec/support/constraints.rb +211 -17
- data/spec/support/expectations.rb +3 -0
- data/spec/support/macros.rb +1 -0
- data/spec/support/shared/time.rb +54 -0
- data/spec/support/spec_config.rb +7 -20
- metadata +508 -515
- metadata.gz.sig +2 -1
- data/lib/mongoid/criteria/queryable/forwardable.rb +0 -65
- data/spec/app/models/customer.rb +0 -11
- data/spec/app/models/customer_address.rb +0 -12
- data/spec/app/models/delegating_patient.rb +0 -16
- data/spec/integration/app_spec.rb +0 -341
- data/spec/integration/callbacks_models.rb +0 -49
- data/spec/integration/callbacks_spec.rb +0 -216
- data/spec/integration/criteria/date_field_spec.rb +0 -41
- data/spec/integration/document_spec.rb +0 -22
- data/spec/mongoid/criteria/queryable/forwardable_spec.rb +0 -87
- data/spec/mongoid/document_persistence_context_spec.rb +0 -33
- data/spec/shared/LICENSE +0 -20
- data/spec/shared/bin/get-mongodb-download-url +0 -17
- data/spec/shared/lib/mrss/child_process_helper.rb +0 -80
- data/spec/shared/lib/mrss/cluster_config.rb +0 -221
- data/spec/shared/lib/mrss/constraints.rb +0 -354
- data/spec/shared/lib/mrss/docker_runner.rb +0 -265
- data/spec/shared/lib/mrss/lite_constraints.rb +0 -191
- data/spec/shared/lib/mrss/server_version_registry.rb +0 -115
- data/spec/shared/lib/mrss/spec_organizer.rb +0 -162
- data/spec/shared/lib/mrss/utils.rb +0 -15
- data/spec/shared/share/Dockerfile.erb +0 -231
- data/spec/shared/shlib/distro.sh +0 -73
- data/spec/shared/shlib/server.sh +0 -290
- data/spec/shared/shlib/set_env.sh +0 -128
- data/spec/support/session_registry.rb +0 -50
|
@@ -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
|
|
|
@@ -8,7 +10,7 @@ module Mongoid
|
|
|
8
10
|
module Constrainable
|
|
9
11
|
|
|
10
12
|
# Convert the supplied object to the appropriate type to set as the
|
|
11
|
-
# foreign key for
|
|
13
|
+
# foreign key for an association.
|
|
12
14
|
#
|
|
13
15
|
# @example Convert the object.
|
|
14
16
|
# constraint.convert("12345")
|
|
@@ -31,7 +33,7 @@ module Mongoid
|
|
|
31
33
|
end
|
|
32
34
|
|
|
33
35
|
private
|
|
34
|
-
|
|
36
|
+
|
|
35
37
|
def convert_polymorphic(object)
|
|
36
38
|
if object.is_a?(Mongoid::Document)
|
|
37
39
|
object.id
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# encoding: utf-8
|
|
3
|
+
|
|
1
4
|
module Mongoid
|
|
2
5
|
module Association
|
|
3
6
|
|
|
4
|
-
# This module defines the
|
|
5
|
-
# nullifies for
|
|
7
|
+
# This module defines the behavior for setting up cascading deletes and
|
|
8
|
+
# nullifies for associations, and how to delegate to the appropriate strategy.
|
|
6
9
|
module Depending
|
|
7
10
|
extend ActiveSupport::Concern
|
|
8
11
|
|
|
@@ -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 Embedded
|
|
5
7
|
|
|
6
|
-
# Contains
|
|
8
|
+
# Contains behavior for executing operations in batch on embedded
|
|
7
9
|
# documents.
|
|
8
10
|
module Batchable
|
|
9
11
|
include Positional
|
|
@@ -24,7 +26,7 @@ module Mongoid
|
|
|
24
26
|
execute_batch_push(docs)
|
|
25
27
|
end
|
|
26
28
|
|
|
27
|
-
# Clear all of the docs out of the
|
|
29
|
+
# Clear all of the docs out of the association in a single swipe.
|
|
28
30
|
#
|
|
29
31
|
# @example Clear all docs.
|
|
30
32
|
# batchable.batch_clear(docs)
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
# encoding: utf-8
|
|
3
|
+
|
|
2
4
|
module Mongoid
|
|
3
5
|
module Association
|
|
4
6
|
module Embedded
|
|
5
7
|
|
|
6
8
|
# This module provides convenience macros for using cyclic embedded
|
|
7
|
-
#
|
|
9
|
+
# associations.
|
|
8
10
|
module Cyclic
|
|
9
11
|
extend ActiveSupport::Concern
|
|
10
12
|
|
|
@@ -14,7 +16,7 @@ module Mongoid
|
|
|
14
16
|
|
|
15
17
|
module ClassMethods
|
|
16
18
|
|
|
17
|
-
# Create a cyclic embedded
|
|
19
|
+
# Create a cyclic embedded association that creates a tree hierarchy for
|
|
18
20
|
# the document and many embedded child documents.
|
|
19
21
|
#
|
|
20
22
|
# @example Set up a recursive embeds many.
|
|
@@ -44,7 +46,7 @@ module Mongoid
|
|
|
44
46
|
embedded_in cyclic_parent_name, class_name: self.name, cyclic: true
|
|
45
47
|
end
|
|
46
48
|
|
|
47
|
-
# Create a cyclic embedded
|
|
49
|
+
# Create a cyclic embedded association that creates a single self
|
|
48
50
|
# referencing relationship for a parent and a single child.
|
|
49
51
|
#
|
|
50
52
|
# @example Set up a recursive embeds one.
|
|
@@ -85,7 +87,7 @@ module Mongoid
|
|
|
85
87
|
#
|
|
86
88
|
# @since 2.0.0.rc.1
|
|
87
89
|
def cyclic_parent_name
|
|
88
|
-
("parent_
|
|
90
|
+
("parent_#{self.name.demodulize.underscore.singularize}").to_sym
|
|
89
91
|
end
|
|
90
92
|
|
|
91
93
|
# Determines the child name given the class.
|
|
@@ -93,14 +95,14 @@ module Mongoid
|
|
|
93
95
|
# @example Determine the child name.
|
|
94
96
|
# Role.cyclic_child_name
|
|
95
97
|
#
|
|
96
|
-
# @param [ true, false ] many Is the a many
|
|
98
|
+
# @param [ true, false ] many Is the a many association?
|
|
97
99
|
#
|
|
98
100
|
# @return [ String ] "child_" plus the class name underscored in
|
|
99
101
|
# singular or plural form.
|
|
100
102
|
#
|
|
101
103
|
# @since 2.0.0.rc.1
|
|
102
104
|
def cyclic_child_name(many = true)
|
|
103
|
-
("child_
|
|
105
|
+
("child_#{self.name.demodulize.underscore.send(many ? :pluralize : :singularize)}").to_sym
|
|
104
106
|
end
|
|
105
107
|
end
|
|
106
108
|
end
|
|
@@ -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'
|
|
@@ -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,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
|
|
@@ -9,7 +12,7 @@ module Mongoid
|
|
|
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
|
|
@@ -18,12 +21,15 @@ module Mongoid
|
|
|
18
21
|
# @param [ Object ] base The object.
|
|
19
22
|
# @param [ Object ] object The parent hash or document.
|
|
20
23
|
# @param [ String ] type Not used in this context.
|
|
24
|
+
# @param [ Hash ] selected_fields Fields which were retrieved via
|
|
25
|
+
# #only. If selected_fields are specified, fields not listed in it
|
|
26
|
+
# will not be accessible in the built document.
|
|
21
27
|
#
|
|
22
28
|
# @return [ Document ] A single document.
|
|
23
|
-
def build(base, object, type = nil)
|
|
29
|
+
def build(base, object, type = nil, selected_fields = nil)
|
|
24
30
|
return object unless object.is_a?(Hash)
|
|
25
31
|
if _loading?
|
|
26
|
-
Factory.from_db(klass, object)
|
|
32
|
+
Factory.from_db(klass, object, nil, selected_fields)
|
|
27
33
|
else
|
|
28
34
|
Factory.build(klass, object)
|
|
29
35
|
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 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/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
|
#
|
|
@@ -197,8 +200,7 @@ module Mongoid
|
|
|
197
200
|
def determine_inverses(other)
|
|
198
201
|
matches = relation_class.relations.values.select do |rel|
|
|
199
202
|
relation_complements.include?(rel.class) &&
|
|
200
|
-
|
|
201
|
-
rel.relation_class_name.sub(/\A::/, '') == inverse_class_name
|
|
203
|
+
rel.relation_class_name == inverse_class_name
|
|
202
204
|
end
|
|
203
205
|
if matches.size > 1
|
|
204
206
|
raise Errors::AmbiguousRelationship.new(relation_class, @owner_class, name, matches)
|
|
@@ -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,13 @@ module Mongoid
|
|
|
80
83
|
|
|
81
84
|
alias :new :build
|
|
82
85
|
|
|
83
|
-
# Clear the
|
|
86
|
+
# Clear the association. Will delete the documents from the db if they are
|
|
84
87
|
# already persisted.
|
|
85
88
|
#
|
|
86
|
-
# @example Clear the
|
|
89
|
+
# @example Clear the association.
|
|
87
90
|
# person.addresses.clear
|
|
88
91
|
#
|
|
89
|
-
# @return [ self ] The empty
|
|
92
|
+
# @return [ self ] The empty association.
|
|
90
93
|
def clear
|
|
91
94
|
batch_clear(_target.dup)
|
|
92
95
|
self
|
|
@@ -109,7 +112,7 @@ module Mongoid
|
|
|
109
112
|
# Delete the supplied document from the target. This method is proxied
|
|
110
113
|
# in order to reindex the array after the operation occurs.
|
|
111
114
|
#
|
|
112
|
-
# @example Delete the document from the
|
|
115
|
+
# @example Delete the document from the association.
|
|
113
116
|
# person.addresses.delete(address)
|
|
114
117
|
#
|
|
115
118
|
# @param [ Document ] document The document to be deleted.
|
|
@@ -136,10 +139,10 @@ module Mongoid
|
|
|
136
139
|
|
|
137
140
|
# Delete all the documents in the association without running callbacks.
|
|
138
141
|
#
|
|
139
|
-
# @example Delete all documents from the
|
|
142
|
+
# @example Delete all documents from the association.
|
|
140
143
|
# person.addresses.delete_all
|
|
141
144
|
#
|
|
142
|
-
# @example Conditionally delete documents from the
|
|
145
|
+
# @example Conditionally delete documents from the association.
|
|
143
146
|
# person.addresses.delete_all({ :street => "Bond" })
|
|
144
147
|
#
|
|
145
148
|
# @param [ Hash ] conditions Conditions on which documents to delete.
|
|
@@ -156,7 +159,7 @@ module Mongoid
|
|
|
156
159
|
# doc.state == "GA"
|
|
157
160
|
# end
|
|
158
161
|
#
|
|
159
|
-
# @return [ Many, Enumerator ] The
|
|
162
|
+
# @return [ Many, Enumerator ] The association or an enumerator if no
|
|
160
163
|
# block was provided.
|
|
161
164
|
#
|
|
162
165
|
# @since 3.1.0
|
|
@@ -174,10 +177,10 @@ module Mongoid
|
|
|
174
177
|
|
|
175
178
|
# Destroy all the documents in the association whilst running callbacks.
|
|
176
179
|
#
|
|
177
|
-
# @example Destroy all documents from the
|
|
180
|
+
# @example Destroy all documents from the association.
|
|
178
181
|
# person.addresses.destroy_all
|
|
179
182
|
#
|
|
180
|
-
# @example Conditionally destroy documents from the
|
|
183
|
+
# @example Conditionally destroy documents from the association.
|
|
181
184
|
# person.addresses.destroy_all({ :street => "Bond" })
|
|
182
185
|
#
|
|
183
186
|
# @param [ Hash ] conditions Conditions on which documents to destroy.
|
|
@@ -187,7 +190,7 @@ module Mongoid
|
|
|
187
190
|
remove_all(conditions, :destroy)
|
|
188
191
|
end
|
|
189
192
|
|
|
190
|
-
# Determine if any documents in this
|
|
193
|
+
# Determine if any documents in this association exist in the database.
|
|
191
194
|
#
|
|
192
195
|
# @example Are there persisted documents?
|
|
193
196
|
# person.posts.exists?
|
|
@@ -213,13 +216,13 @@ module Mongoid
|
|
|
213
216
|
criteria.find(*args)
|
|
214
217
|
end
|
|
215
218
|
|
|
216
|
-
# Instantiate a new embeds_many
|
|
219
|
+
# Instantiate a new embeds_many association.
|
|
217
220
|
#
|
|
218
|
-
# @example Create the new
|
|
221
|
+
# @example Create the new association.
|
|
219
222
|
# Many.new(person, addresses, association)
|
|
220
223
|
#
|
|
221
|
-
# @param [ Document ] base The document this
|
|
222
|
-
# @param [ Array<Document> ] target The child documents of the
|
|
224
|
+
# @param [ Document ] base The document this association hangs off of.
|
|
225
|
+
# @param [ Array<Document> ] target The child documents of the association.
|
|
223
226
|
# @param [ Association ] association The association metadata
|
|
224
227
|
#
|
|
225
228
|
# @return [ Many ] The proxy.
|
|
@@ -234,7 +237,7 @@ module Mongoid
|
|
|
234
237
|
end
|
|
235
238
|
end
|
|
236
239
|
|
|
237
|
-
# Get all the documents in the
|
|
240
|
+
# Get all the documents in the association that are loaded into memory.
|
|
238
241
|
#
|
|
239
242
|
# @example Get the in memory documents.
|
|
240
243
|
# relation.in_memory
|
|
@@ -246,7 +249,7 @@ module Mongoid
|
|
|
246
249
|
_target
|
|
247
250
|
end
|
|
248
251
|
|
|
249
|
-
# Pop documents off the
|
|
252
|
+
# Pop documents off the association. This can be a single document or
|
|
250
253
|
# multiples, and will automatically persist the changes.
|
|
251
254
|
#
|
|
252
255
|
# @example Pop a single document.
|
|
@@ -271,7 +274,7 @@ module Mongoid
|
|
|
271
274
|
end
|
|
272
275
|
end
|
|
273
276
|
|
|
274
|
-
# Shift documents off the
|
|
277
|
+
# Shift documents off the association. This can be a single document or
|
|
275
278
|
# multiples, and will automatically persist the changes.
|
|
276
279
|
#
|
|
277
280
|
# @example Shift a single document.
|
|
@@ -297,12 +300,12 @@ module Mongoid
|
|
|
297
300
|
# Substitutes the supplied target documents for the existing documents
|
|
298
301
|
# in the relation.
|
|
299
302
|
#
|
|
300
|
-
# @example Substitute the
|
|
303
|
+
# @example Substitute the association's target.
|
|
301
304
|
# person.addresses.substitute([ address ])
|
|
302
305
|
#
|
|
303
306
|
# @param [ Array<Document> ] docs The replacement docs.
|
|
304
307
|
#
|
|
305
|
-
# @return [ Many ] The proxied
|
|
308
|
+
# @return [ Many ] The proxied association.
|
|
306
309
|
#
|
|
307
310
|
# @since 2.0.0.rc.1
|
|
308
311
|
def substitute(docs)
|
|
@@ -310,13 +313,13 @@ module Mongoid
|
|
|
310
313
|
self
|
|
311
314
|
end
|
|
312
315
|
|
|
313
|
-
# Return the
|
|
316
|
+
# Return the association with all previous scoping removed. This is the
|
|
314
317
|
# exact representation of the docs in the database.
|
|
315
318
|
#
|
|
316
319
|
# @example Get the unscoped documents.
|
|
317
320
|
# person.addresses.unscoped
|
|
318
321
|
#
|
|
319
|
-
# @return [ Criteria ] The unscoped
|
|
322
|
+
# @return [ Criteria ] The unscoped association.
|
|
320
323
|
#
|
|
321
324
|
# @since 2.4.0
|
|
322
325
|
def unscoped
|
|
@@ -352,7 +355,7 @@ module Mongoid
|
|
|
352
355
|
execute_callback :after_add, document
|
|
353
356
|
end
|
|
354
357
|
|
|
355
|
-
# Instantiate the binding associated with this
|
|
358
|
+
# Instantiate the binding associated with this association.
|
|
356
359
|
#
|
|
357
360
|
# @example Create the binding.
|
|
358
361
|
# relation.binding([ address ])
|
|
@@ -388,7 +391,7 @@ module Mongoid
|
|
|
388
391
|
reindex
|
|
389
392
|
end
|
|
390
393
|
|
|
391
|
-
# Integrate the document into the
|
|
394
|
+
# Integrate the document into the association. will set its metadata and
|
|
392
395
|
# attempt to bind the inverse.
|
|
393
396
|
#
|
|
394
397
|
# @example Integrate the document.
|
|
@@ -419,12 +422,12 @@ module Mongoid
|
|
|
419
422
|
end
|
|
420
423
|
end
|
|
421
424
|
|
|
422
|
-
# Are we able to persist this
|
|
425
|
+
# Are we able to persist this association?
|
|
423
426
|
#
|
|
424
|
-
# @example Can we persist the
|
|
427
|
+
# @example Can we persist the association?
|
|
425
428
|
# relation.persistable?
|
|
426
429
|
#
|
|
427
|
-
# @return [ true, false ] If the
|
|
430
|
+
# @return [ true, false ] If the association is persistable.
|
|
428
431
|
#
|
|
429
432
|
# @since 2.1.0
|
|
430
433
|
def persistable?
|
|
@@ -435,7 +438,7 @@ module Mongoid
|
|
|
435
438
|
# operations on the proxied target directly and the indices need to
|
|
436
439
|
# match that on the database side.
|
|
437
440
|
#
|
|
438
|
-
# @example Reindex the
|
|
441
|
+
# @example Reindex the association.
|
|
439
442
|
# person.addresses.reindex
|
|
440
443
|
#
|
|
441
444
|
# @since 2.0.0.rc.1
|
|
@@ -467,10 +470,10 @@ module Mongoid
|
|
|
467
470
|
crit.entries
|
|
468
471
|
end
|
|
469
472
|
|
|
470
|
-
# Remove all documents from the
|
|
473
|
+
# Remove all documents from the association, either with a delete or a
|
|
471
474
|
# destroy depending on what this was called through.
|
|
472
475
|
#
|
|
473
|
-
# @example Destroy documents from the
|
|
476
|
+
# @example Destroy documents from the association.
|
|
474
477
|
# relation.remove_all({ :num => 1 }, true)
|
|
475
478
|
#
|
|
476
479
|
# @param [ Hash ] conditions Conditions to filter by.
|
|
@@ -520,10 +523,10 @@ module Mongoid
|
|
|
520
523
|
|
|
521
524
|
class << self
|
|
522
525
|
|
|
523
|
-
# Returns true if the
|
|
526
|
+
# Returns true if the association is an embedded one. In this case
|
|
524
527
|
# always true.
|
|
525
528
|
#
|
|
526
|
-
# @example Is the
|
|
529
|
+
# @example Is the association embedded?
|
|
527
530
|
# Association::Embedded::EmbedsMany.embedded?
|
|
528
531
|
#
|
|
529
532
|
# @return [ true ] true.
|