mongoid 7.1.10 → 7.2.0.rc1
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/README.md +10 -3
- data/Rakefile +11 -30
- data/lib/config/locales/en.yml +37 -1
- data/lib/mongoid.rb +23 -1
- data/lib/mongoid/association/depending.rb +1 -6
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +1 -1
- data/lib/mongoid/association/many.rb +3 -3
- data/lib/mongoid/association/proxy.rb +1 -1
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +1 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +37 -2
- data/lib/mongoid/association/referenced/has_many/proxy.rb +9 -2
- data/lib/mongoid/association/referenced/has_one/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/has_one/proxy.rb +1 -6
- data/lib/mongoid/atomic/modifiers.rb +1 -1
- data/lib/mongoid/attributes.rb +1 -8
- data/lib/mongoid/attributes/dynamic.rb +1 -1
- data/lib/mongoid/clients/factory.rb +17 -0
- data/lib/mongoid/composable.rb +1 -0
- data/lib/mongoid/config.rb +3 -0
- data/lib/mongoid/contextual/mongo.rb +23 -4
- data/lib/mongoid/copyable.rb +2 -2
- data/lib/mongoid/criteria.rb +58 -8
- data/lib/mongoid/criteria/queryable/key.rb +1 -1
- data/lib/mongoid/criteria/queryable/mergeable.rb +2 -2
- data/lib/mongoid/criteria/queryable/selectable.rb +21 -6
- data/lib/mongoid/criteria/queryable/selector.rb +7 -3
- data/lib/mongoid/criteria/queryable/storable.rb +3 -3
- data/lib/mongoid/document.rb +17 -6
- data/lib/mongoid/errors.rb +7 -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_operator.rb +33 -0
- data/lib/mongoid/errors/invalid_query.rb +41 -0
- data/lib/mongoid/errors/mongoid_error.rb +1 -1
- data/lib/mongoid/factory.rb +27 -10
- data/lib/mongoid/fields/validators/macro.rb +22 -9
- data/lib/mongoid/findable.rb +50 -14
- data/lib/mongoid/indexable.rb +2 -2
- data/lib/mongoid/interceptable.rb +2 -4
- data/lib/mongoid/matchable.rb +1 -149
- data/lib/mongoid/matcher.rb +127 -0
- data/lib/mongoid/matcher/all.rb +22 -0
- data/lib/mongoid/matcher/and.rb +21 -0
- data/lib/mongoid/matcher/elem_match.rb +35 -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 +40 -0
- data/lib/mongoid/matcher/expression_operator.rb +19 -0
- data/lib/mongoid/matcher/field_expression.rb +63 -0
- data/lib/mongoid/matcher/field_operator.rb +52 -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/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/persistable/deletable.rb +1 -1
- data/lib/mongoid/query_cache.rb +64 -62
- data/lib/mongoid/reloadable.rb +2 -7
- data/lib/mongoid/serializable.rb +1 -1
- data/lib/mongoid/traversable.rb +111 -4
- data/lib/mongoid/validatable/associated.rb +1 -1
- data/lib/mongoid/validatable/presence.rb +3 -3
- data/lib/mongoid/validatable/uniqueness.rb +1 -1
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/config_generator.rb +1 -8
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +1 -1
- data/spec/integration/app_spec.rb +88 -178
- data/spec/integration/associations/embedded_spec.rb +94 -0
- data/spec/integration/associations/has_many_spec.rb +39 -46
- data/spec/integration/associations/has_one_spec.rb +39 -46
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +116 -0
- data/spec/integration/atomic/modifiers_spec.rb +117 -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 +0 -21
- 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/elem_match.yml +363 -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/gte.yml +132 -0
- data/spec/integration/matcher_operator_data/implicit.yml +331 -0
- data/spec/integration/matcher_operator_data/implicit_traversal.yml +16 -0
- data/spec/integration/matcher_operator_data/in.yml +194 -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/lte.yml +132 -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/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_spec.rb +100 -0
- data/spec/integration/matcher_spec.rb +189 -0
- data/spec/integration/server_query_spec.rb +142 -0
- data/spec/lite_spec_helper.rb +7 -7
- data/spec/mongoid/association/depending_spec.rb +78 -26
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +0 -50
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +37 -17
- data/spec/mongoid/association/embedded/embeds_many_models.rb +1 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +1 -0
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +0 -17
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +460 -186
- data/spec/mongoid/association/referenced/has_many_models.rb +9 -0
- data/spec/mongoid/association/referenced/has_one_models.rb +9 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +47 -0
- data/spec/mongoid/atomic/paths_spec.rb +0 -41
- data/spec/mongoid/atomic_spec.rb +23 -0
- data/spec/mongoid/attributes/nested_spec.rb +1 -1
- data/spec/mongoid/attributes_spec.rb +0 -241
- data/spec/mongoid/clients/factory_spec.rb +37 -0
- data/spec/mongoid/clients/options_spec.rb +0 -2
- data/spec/mongoid/clients/sessions_spec.rb +1 -6
- data/spec/mongoid/config_spec.rb +28 -0
- data/spec/mongoid/contextual/atomic_spec.rb +4 -17
- data/spec/mongoid/contextual/mongo_spec.rb +70 -16
- data/spec/mongoid/copyable_spec.rb +153 -1
- data/spec/mongoid/copyable_spec_models.rb +14 -0
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +0 -36
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +84 -82
- data/spec/mongoid/criteria_spec.rb +204 -43
- data/spec/mongoid/document_query_spec.rb +0 -51
- data/spec/mongoid/document_spec.rb +89 -15
- data/spec/mongoid/errors/delete_restriction_spec.rb +1 -1
- data/spec/mongoid/errors/mongoid_error_spec.rb +8 -20
- data/spec/mongoid/factory_spec.rb +261 -28
- data/spec/mongoid/fields_spec.rb +48 -2
- data/spec/mongoid/findable_spec.rb +32 -0
- data/spec/mongoid/indexable_spec.rb +28 -2
- data/spec/mongoid/inspectable_spec.rb +29 -2
- data/spec/mongoid/interceptable_spec.rb +2 -2
- data/spec/mongoid/matcher/extract_attribute_data/traversal.yml +259 -0
- data/spec/mongoid/matcher/extract_attribute_spec.rb +47 -0
- data/spec/mongoid/persistable/creatable_spec.rb +108 -25
- data/spec/mongoid/persistable/deletable_spec.rb +86 -0
- data/spec/mongoid/persistable/savable_spec.rb +174 -16
- data/spec/mongoid/persistable/settable_spec.rb +0 -30
- data/spec/mongoid/persistable_spec.rb +2 -2
- data/spec/mongoid/query_cache_middleware_spec.rb +16 -3
- data/spec/mongoid/query_cache_spec.rb +442 -41
- data/spec/mongoid/reloadable_spec.rb +72 -0
- data/spec/mongoid/serializable_spec.rb +21 -3
- data/spec/mongoid/traversable_spec.rb +1100 -0
- data/spec/spec_helper.rb +3 -5
- data/spec/support/child_process_helper.rb +79 -0
- data/spec/support/constraints.rb +250 -0
- data/spec/support/helpers.rb +1 -1
- data/spec/support/lite_constraints.rb +22 -0
- data/spec/{app → support}/models/account.rb +0 -0
- data/spec/{app → support}/models/acolyte.rb +0 -0
- data/spec/{app → support}/models/actor.rb +1 -1
- data/spec/{app → support}/models/actress.rb +0 -0
- data/spec/{app → support}/models/address.rb +0 -4
- data/spec/{app → support}/models/address_component.rb +0 -0
- data/spec/{app → support}/models/address_number.rb +0 -0
- data/spec/{app → support}/models/agency.rb +0 -0
- data/spec/{app → support}/models/agent.rb +0 -0
- data/spec/{app → support}/models/album.rb +0 -0
- data/spec/{app → support}/models/alert.rb +0 -0
- data/spec/{app → support}/models/animal.rb +0 -0
- data/spec/{app → support}/models/answer.rb +0 -0
- data/spec/{app → support}/models/appointment.rb +0 -0
- data/spec/support/models/armrest.rb +10 -0
- data/spec/{app → support}/models/array_field.rb +0 -0
- data/spec/{app → support}/models/article.rb +0 -0
- data/spec/{app → support}/models/artist.rb +0 -0
- data/spec/{app → support}/models/artwork.rb +0 -0
- data/spec/{app → support}/models/audio.rb +0 -0
- data/spec/{app → support}/models/augmentation.rb +0 -0
- data/spec/{app → support}/models/author.rb +0 -0
- data/spec/{app → support}/models/baby.rb +0 -0
- data/spec/{app → support}/models/band.rb +0 -0
- data/spec/{app → support}/models/bar.rb +0 -0
- data/spec/{app → support}/models/basic.rb +0 -0
- data/spec/{app → support}/models/bed.rb +0 -0
- data/spec/{app → support}/models/big_palette.rb +0 -0
- data/spec/{app → support}/models/birthday.rb +0 -0
- data/spec/{app → support}/models/bomb.rb +0 -0
- data/spec/{app → support}/models/book.rb +0 -0
- data/spec/{app → support}/models/breed.rb +0 -0
- data/spec/{app → support}/models/browser.rb +1 -1
- data/spec/{app → support}/models/building.rb +0 -0
- data/spec/{app → support}/models/building_address.rb +0 -0
- data/spec/{app → support}/models/bus.rb +0 -0
- data/spec/{app → support}/models/business.rb +0 -0
- data/spec/{app → support}/models/callback_test.rb +0 -0
- data/spec/{app → support}/models/canvas.rb +1 -1
- data/spec/{app → support}/models/car.rb +0 -0
- data/spec/{app → support}/models/cat.rb +0 -0
- data/spec/{app → support}/models/category.rb +0 -0
- data/spec/{app → support}/models/child.rb +0 -0
- data/spec/{app → support}/models/child_doc.rb +0 -0
- data/spec/{app → support}/models/church.rb +0 -0
- data/spec/{app → support}/models/circle.rb +0 -0
- data/spec/{app → support}/models/circuit.rb +0 -0
- data/spec/{app → support}/models/circus.rb +0 -0
- data/spec/{app → support}/models/code.rb +0 -0
- data/spec/{app → support}/models/coding.rb +1 -1
- data/spec/{app → support}/models/coding/pull_request.rb +0 -0
- data/spec/{app → support}/models/comment.rb +0 -0
- data/spec/{app → support}/models/company.rb +0 -0
- data/spec/{app → support}/models/consumption_period.rb +0 -0
- data/spec/{app → support}/models/contextable_item.rb +0 -0
- data/spec/{app → support}/models/contractor.rb +0 -0
- data/spec/{app → support}/models/cookie.rb +0 -0
- data/spec/{app → support}/models/country_code.rb +0 -0
- data/spec/{app → support}/models/courier_job.rb +0 -0
- data/spec/support/models/crate.rb +13 -0
- data/spec/support/models/deed.rb +8 -0
- data/spec/{app → support}/models/definition.rb +0 -0
- data/spec/{app → support}/models/delegating_patient.rb +0 -0
- data/spec/{app → support}/models/description.rb +0 -0
- data/spec/{app → support}/models/dictionary.rb +0 -6
- data/spec/{app → support}/models/division.rb +0 -0
- data/spec/{app → support}/models/doctor.rb +0 -0
- data/spec/{app → support}/models/dog.rb +0 -0
- data/spec/{app → support}/models/dokument.rb +0 -0
- data/spec/{app → support}/models/draft.rb +0 -0
- data/spec/{app → support}/models/dragon.rb +0 -0
- data/spec/{app → support}/models/driver.rb +1 -1
- data/spec/{app → support}/models/drug.rb +0 -0
- data/spec/{app → support}/models/dungeon.rb +0 -0
- data/spec/{app → support}/models/edit.rb +0 -0
- data/spec/{app → support}/models/email.rb +0 -0
- data/spec/{app → support}/models/employer.rb +0 -0
- data/spec/{app → support}/models/entry.rb +0 -0
- data/spec/{app → support}/models/eraser.rb +0 -0
- data/spec/{app → support}/models/even.rb +0 -0
- data/spec/{app → support}/models/event.rb +0 -0
- data/spec/{app → support}/models/exhibition.rb +0 -0
- data/spec/{app → support}/models/exhibitor.rb +0 -0
- data/spec/{app → support}/models/explosion.rb +0 -0
- data/spec/{app → support}/models/eye.rb +0 -0
- data/spec/{app → support}/models/eye_bowl.rb +0 -0
- data/spec/{app → support}/models/face.rb +0 -0
- data/spec/{app → support}/models/favorite.rb +0 -0
- data/spec/{app → support}/models/filesystem.rb +0 -0
- data/spec/{app → support}/models/fire_hydrant.rb +0 -0
- data/spec/{app → support}/models/firefox.rb +0 -0
- data/spec/{app → support}/models/fish.rb +0 -0
- data/spec/{app → support}/models/folder.rb +0 -0
- data/spec/{app → support}/models/folder_item.rb +0 -0
- data/spec/{app → support}/models/fruits.rb +0 -0
- data/spec/{app → support}/models/game.rb +0 -0
- data/spec/{app → support}/models/ghost.rb +0 -0
- data/spec/support/models/guitar.rb +5 -0
- data/spec/{app → support}/models/home.rb +0 -0
- data/spec/{app → support}/models/house.rb +0 -0
- data/spec/{app → support}/models/html_writer.rb +0 -0
- data/spec/{app → support}/models/id_key.rb +0 -0
- data/spec/support/models/idnodef.rb +8 -0
- data/spec/{app → support}/models/image.rb +0 -0
- data/spec/{app → support}/models/implant.rb +0 -0
- data/spec/support/models/instrument.rb +9 -0
- data/spec/{app → support}/models/item.rb +1 -1
- data/spec/{app → support}/models/jar.rb +0 -0
- data/spec/{app → support}/models/kaleidoscope.rb +0 -0
- data/spec/{app → support}/models/kangaroo.rb +0 -0
- data/spec/{app → support}/models/label.rb +0 -0
- data/spec/{app → support}/models/language.rb +0 -0
- data/spec/{app → support}/models/lat_lng.rb +0 -0
- data/spec/{app → support}/models/league.rb +0 -0
- data/spec/{app → support}/models/learner.rb +0 -0
- data/spec/{app → support}/models/line_item.rb +0 -0
- data/spec/{app → support}/models/location.rb +0 -0
- data/spec/{app → support}/models/login.rb +0 -0
- data/spec/{app → support}/models/manufacturer.rb +0 -0
- data/spec/{app → support}/models/meat.rb +0 -0
- data/spec/{app → support}/models/membership.rb +0 -0
- data/spec/{app → support}/models/message.rb +0 -0
- data/spec/{app → support}/models/minim.rb +0 -0
- data/spec/{app → support}/models/mixed_drink.rb +0 -0
- data/spec/support/models/mop.rb +16 -0
- data/spec/{app → support}/models/movie.rb +0 -0
- data/spec/{app → support}/models/my_hash.rb +0 -0
- data/spec/{app → support}/models/name.rb +0 -0
- data/spec/{app → support}/models/name_only.rb +0 -0
- data/spec/{app → support}/models/node.rb +0 -0
- data/spec/{app → support}/models/note.rb +0 -0
- data/spec/{app → support}/models/odd.rb +0 -0
- data/spec/{app → support}/models/ordered_post.rb +0 -0
- data/spec/{app → support}/models/ordered_preference.rb +0 -0
- data/spec/{app → support}/models/oscar.rb +0 -0
- data/spec/{app → support}/models/other_owner_object.rb +0 -0
- data/spec/{app → support}/models/override.rb +0 -0
- data/spec/{app → support}/models/ownable.rb +0 -0
- data/spec/{app → support}/models/owner.rb +2 -0
- data/spec/{app → support}/models/pack.rb +0 -0
- data/spec/{app → support}/models/page.rb +0 -0
- data/spec/{app → support}/models/page_question.rb +0 -0
- data/spec/{app → support}/models/palette.rb +1 -1
- data/spec/{app → support}/models/parent.rb +0 -0
- data/spec/{app → support}/models/parent_doc.rb +0 -0
- data/spec/{app → support}/models/passport.rb +0 -0
- data/spec/{app → support}/models/patient.rb +0 -0
- data/spec/{app → support}/models/pdf_writer.rb +0 -0
- data/spec/{app → support}/models/pencil.rb +0 -0
- data/spec/{app → support}/models/person.rb +1 -12
- data/spec/{app → support}/models/pet.rb +0 -0
- data/spec/{app → support}/models/pet_owner.rb +0 -0
- data/spec/{app → support}/models/phone.rb +0 -0
- data/spec/support/models/piano.rb +5 -0
- data/spec/{app → support}/models/pizza.rb +0 -0
- data/spec/{app → support}/models/player.rb +0 -0
- data/spec/{app → support}/models/post.rb +0 -0
- data/spec/{app → support}/models/post_genre.rb +0 -0
- data/spec/{app → support}/models/powerup.rb +0 -0
- data/spec/{app → support}/models/preference.rb +0 -0
- data/spec/{app → support}/models/princess.rb +0 -0
- data/spec/{app → support}/models/product.rb +0 -0
- data/spec/support/models/profile.rb +18 -0
- data/spec/{app → support}/models/pronunciation.rb +0 -0
- data/spec/{app → support}/models/pub.rb +0 -0
- data/spec/support/models/publication.rb +5 -0
- data/spec/{app → support}/models/publication/encyclopedia.rb +0 -0
- data/spec/{app → support}/models/publication/review.rb +0 -0
- data/spec/{app → support}/models/purchase.rb +0 -0
- data/spec/{app → support}/models/question.rb +0 -0
- data/spec/{app → support}/models/quiz.rb +0 -0
- data/spec/{app → support}/models/rating.rb +0 -0
- data/spec/{app → support}/models/record.rb +0 -0
- data/spec/{app → support}/models/registry.rb +0 -0
- data/spec/{app → support}/models/role.rb +0 -0
- data/spec/{app → support}/models/root_category.rb +0 -0
- data/spec/{app → support}/models/sandwich.rb +0 -0
- data/spec/{app → support}/models/scheduler.rb +0 -0
- data/spec/{app/models/profile.rb → support/models/scribe.rb} +2 -2
- data/spec/support/models/seat.rb +25 -0
- data/spec/{app → support}/models/seo.rb +0 -0
- data/spec/{app → support}/models/series.rb +0 -1
- data/spec/{app → support}/models/server.rb +0 -0
- data/spec/{app → support}/models/service.rb +0 -0
- data/spec/{app → support}/models/shape.rb +2 -2
- data/spec/{app → support}/models/shelf.rb +0 -0
- data/spec/{app → support}/models/shipment_address.rb +0 -0
- data/spec/{app → support}/models/shipping_container.rb +0 -0
- data/spec/{app → support}/models/shipping_pack.rb +0 -0
- data/spec/{app → support}/models/shop.rb +0 -0
- data/spec/{app → support}/models/short_agent.rb +0 -0
- data/spec/{app → support}/models/short_quiz.rb +0 -0
- data/spec/{app → support}/models/simple.rb +0 -0
- data/spec/{app → support}/models/slave.rb +0 -0
- data/spec/{app → support}/models/song.rb +0 -0
- data/spec/{app → support}/models/sound.rb +0 -0
- data/spec/{app → support}/models/square.rb +0 -0
- data/spec/{app → support}/models/staff.rb +0 -0
- data/spec/{app → support}/models/store_as_dup_test1.rb +0 -0
- data/spec/{app → support}/models/store_as_dup_test2.rb +0 -0
- data/spec/{app → support}/models/store_as_dup_test3.rb +0 -0
- data/spec/{app → support}/models/store_as_dup_test4.rb +0 -0
- data/spec/{app → support}/models/strategy.rb +0 -0
- data/spec/{app → support}/models/sub_item.rb +0 -0
- data/spec/{app → support}/models/subscription.rb +0 -0
- data/spec/{app → support}/models/survey.rb +0 -0
- data/spec/{app → support}/models/symptom.rb +0 -0
- data/spec/support/models/system_role.rb +7 -0
- data/spec/{app → support}/models/tag.rb +0 -0
- data/spec/{app → support}/models/target.rb +0 -0
- data/spec/{app → support}/models/template.rb +0 -0
- data/spec/{app → support}/models/thing.rb +0 -0
- data/spec/{app → support}/models/title.rb +0 -0
- data/spec/{app → support}/models/tool.rb +2 -2
- data/spec/{app → support}/models/topping.rb +0 -0
- data/spec/support/models/toy.rb +10 -0
- data/spec/{app → support}/models/track.rb +0 -0
- data/spec/{app → support}/models/translation.rb +0 -0
- data/spec/{app → support}/models/tree.rb +0 -0
- data/spec/{app → support}/models/truck.rb +2 -0
- data/spec/{app → support}/models/updatable.rb +0 -0
- data/spec/{app → support}/models/user.rb +0 -0
- data/spec/{app → support}/models/user_account.rb +0 -0
- data/spec/{app → support}/models/validation_callback.rb +0 -0
- data/spec/{app → support}/models/vehicle.rb +7 -2
- data/spec/{app → support}/models/version.rb +0 -0
- data/spec/{app → support}/models/vertex.rb +0 -0
- data/spec/{app → support}/models/vet_visit.rb +0 -0
- data/spec/{app → support}/models/video.rb +0 -0
- data/spec/{app → support}/models/video_game.rb +0 -0
- data/spec/{app → support}/models/weapon.rb +0 -0
- data/spec/{app → support}/models/wiki_page.rb +0 -1
- data/spec/{app → support}/models/word.rb +0 -0
- data/spec/{app → support}/models/word_origin.rb +0 -0
- data/spec/{app → support}/models/writer.rb +2 -2
- data/spec/support/spec_config.rb +1 -9
- data/spec/support/spec_organizer.rb +130 -0
- metadata +841 -828
- metadata.gz.sig +0 -0
- data/lib/mongoid/matchable/all.rb +0 -30
- data/lib/mongoid/matchable/and.rb +0 -32
- data/lib/mongoid/matchable/default.rb +0 -121
- data/lib/mongoid/matchable/elem_match.rb +0 -36
- data/lib/mongoid/matchable/eq.rb +0 -23
- data/lib/mongoid/matchable/exists.rb +0 -25
- data/lib/mongoid/matchable/gt.rb +0 -25
- data/lib/mongoid/matchable/gte.rb +0 -25
- data/lib/mongoid/matchable/in.rb +0 -26
- data/lib/mongoid/matchable/lt.rb +0 -25
- data/lib/mongoid/matchable/lte.rb +0 -25
- data/lib/mongoid/matchable/ne.rb +0 -23
- data/lib/mongoid/matchable/nin.rb +0 -24
- data/lib/mongoid/matchable/nor.rb +0 -38
- data/lib/mongoid/matchable/or.rb +0 -35
- data/lib/mongoid/matchable/regexp.rb +0 -30
- data/lib/mongoid/matchable/size.rb +0 -23
- data/spec/app/models/customer.rb +0 -11
- data/spec/app/models/customer_address.rb +0 -12
- data/spec/app/models/publication.rb +0 -5
- data/spec/integration/associations/embeds_many_spec.rb +0 -24
- data/spec/integration/associations/embeds_one_spec.rb +0 -24
- data/spec/integration/callbacks_models.rb +0 -49
- data/spec/integration/callbacks_spec.rb +0 -216
- data/spec/mongoid/matchable/all_spec.rb +0 -34
- data/spec/mongoid/matchable/and_spec.rb +0 -190
- data/spec/mongoid/matchable/default_spec.rb +0 -140
- data/spec/mongoid/matchable/elem_match_spec.rb +0 -109
- data/spec/mongoid/matchable/eq_spec.rb +0 -49
- data/spec/mongoid/matchable/exists_spec.rb +0 -60
- data/spec/mongoid/matchable/gt_spec.rb +0 -89
- data/spec/mongoid/matchable/gte_spec.rb +0 -87
- data/spec/mongoid/matchable/in_spec.rb +0 -52
- data/spec/mongoid/matchable/lt_spec.rb +0 -88
- data/spec/mongoid/matchable/lte_spec.rb +0 -88
- data/spec/mongoid/matchable/ne_spec.rb +0 -49
- data/spec/mongoid/matchable/nin_spec.rb +0 -51
- data/spec/mongoid/matchable/nor_spec.rb +0 -210
- data/spec/mongoid/matchable/or_spec.rb +0 -134
- data/spec/mongoid/matchable/regexp_spec.rb +0 -62
- data/spec/mongoid/matchable/size_spec.rb +0 -28
- data/spec/mongoid/matchable_spec.rb +0 -856
- data/spec/shared/LICENSE +0 -20
- data/spec/shared/bin/get-mongodb-download-url +0 -17
- data/spec/shared/bin/s3-copy +0 -45
- data/spec/shared/bin/s3-upload +0 -69
- data/spec/shared/lib/mrss/child_process_helper.rb +0 -80
- data/spec/shared/lib/mrss/cluster_config.rb +0 -226
- data/spec/shared/lib/mrss/constraints.rb +0 -368
- data/spec/shared/lib/mrss/docker_runner.rb +0 -271
- 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 -179
- data/spec/shared/lib/mrss/utils.rb +0 -15
- data/spec/shared/share/Dockerfile.erb +0 -322
- data/spec/shared/share/haproxy-1.conf +0 -16
- data/spec/shared/share/haproxy-2.conf +0 -17
- data/spec/shared/shlib/distro.sh +0 -73
- data/spec/shared/shlib/server.sh +0 -317
- data/spec/shared/shlib/set_env.sh +0 -131
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: da086175f8b41ffc6991262225460da5577f7ea47d3c355f34e072ff5c78d5f1
|
|
4
|
+
data.tar.gz: 7797a83ed15fd55f0ec8aba1a43569393f99f037a7f1013aeb0770f0aa4c3000
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f18e6f9ca45ce9cc406a32983d031388c5f6a76100de18fcdf036163bf08c74f4f15a1e77a02c6445e37f2824ec6ecf549514bf78447f7876b8d52d2c2fb4947
|
|
7
|
+
data.tar.gz: ca7b9fe36e273d4e2dab3680dbaa973450eb2b87ae58a9d462bba6ec95d27de1479255175a9d7971b32e61b5a43726d7b7855134c5ec733b75e126e6e51fb408
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data.tar.gz.sig
CHANGED
|
Binary file
|
data/README.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
[![
|
|
1
|
+
Mongoid
|
|
2
|
+
[![Gem Version][rubygems-img]][rubygems-url]
|
|
3
|
+
[![Inline docs][inch-img]][inch-url]
|
|
4
|
+
====
|
|
3
5
|
|
|
4
6
|
Mongoid is an ODM (Object-Document Mapper) framework for MongoDB in Ruby.
|
|
5
7
|
|
|
@@ -17,7 +19,7 @@ Compatibility
|
|
|
17
19
|
|
|
18
20
|
Mongoid supports and is tested against:
|
|
19
21
|
|
|
20
|
-
- MRI 2.3-
|
|
22
|
+
- MRI 2.3-2.7
|
|
21
23
|
- JRuby 9.2
|
|
22
24
|
- MongoDB server 2.6-4.4
|
|
23
25
|
|
|
@@ -63,3 +65,8 @@ Credits
|
|
|
63
65
|
-------
|
|
64
66
|
|
|
65
67
|
Durran Jordan: durran at gmail dot com
|
|
68
|
+
|
|
69
|
+
[rubygems-img]: https://badge.fury.io/rb/mongoid.svg
|
|
70
|
+
[rubygems-url]: http://badge.fury.io/rb/mongoid
|
|
71
|
+
[inch-img]: http://inch-ci.org/github/mongodb/mongoid.svg?branch=master
|
|
72
|
+
[inch-url]: http://inch-ci.org/github/mongodb/mongoid
|
data/Rakefile
CHANGED
|
@@ -4,13 +4,8 @@ require "bundler"
|
|
|
4
4
|
require "bundler/gem_tasks"
|
|
5
5
|
Bundler.setup
|
|
6
6
|
|
|
7
|
-
ROOT = File.expand_path(File.join(File.dirname(__FILE__)))
|
|
8
|
-
|
|
9
|
-
$: << File.join(ROOT, 'spec/shared/lib')
|
|
10
|
-
|
|
11
7
|
require "rake"
|
|
12
8
|
require "rspec/core/rake_task"
|
|
13
|
-
require 'mrss/spec_organizer'
|
|
14
9
|
|
|
15
10
|
$LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
|
|
16
11
|
require "mongoid/version"
|
|
@@ -27,8 +22,11 @@ task :install => :build do
|
|
|
27
22
|
system "sudo gem install mongoid-#{Mongoid::VERSION}.gem"
|
|
28
23
|
end
|
|
29
24
|
|
|
30
|
-
task :release do
|
|
31
|
-
|
|
25
|
+
task :release => :build do
|
|
26
|
+
system "git tag -a v#{Mongoid::VERSION} -m 'Tagging #{Mongoid::VERSION}'"
|
|
27
|
+
system "git push --tags"
|
|
28
|
+
system "gem push mongoid-#{Mongoid::VERSION}.gem"
|
|
29
|
+
system "rm mongoid-#{Mongoid::VERSION}.gem"
|
|
32
30
|
end
|
|
33
31
|
|
|
34
32
|
RSpec::Core::RakeTask.new("spec") do |spec|
|
|
@@ -40,30 +38,11 @@ RSpec::Core::RakeTask.new('spec:progress') do |spec|
|
|
|
40
38
|
spec.pattern = "spec/**/*_spec.rb"
|
|
41
39
|
end
|
|
42
40
|
|
|
43
|
-
CLASSIFIERS = [
|
|
44
|
-
[%r,^mongoid/attribute,, :attributes],
|
|
45
|
-
[%r,^mongoid/association/[or],, :associations_referenced],
|
|
46
|
-
[%r,^mongoid/association,, :associations],
|
|
47
|
-
[%r,^mongoid,, :unit],
|
|
48
|
-
[%r,^integration,, :integration],
|
|
49
|
-
[%r,^rails,, :rails],
|
|
50
|
-
]
|
|
51
|
-
|
|
52
|
-
RUN_PRIORITY = %i(
|
|
53
|
-
unit attributes associations_referenced associations
|
|
54
|
-
integration rails
|
|
55
|
-
)
|
|
56
|
-
|
|
57
|
-
def spec_organizer
|
|
58
|
-
Mrss::SpecOrganizer.new(
|
|
59
|
-
root: ROOT,
|
|
60
|
-
classifiers: CLASSIFIERS,
|
|
61
|
-
priority_order: RUN_PRIORITY,
|
|
62
|
-
)
|
|
63
|
-
end
|
|
64
|
-
|
|
65
41
|
task :ci do
|
|
66
|
-
|
|
42
|
+
$LOAD_PATH.push File.expand_path("../spec", __FILE__)
|
|
43
|
+
require 'support/spec_organizer'
|
|
44
|
+
|
|
45
|
+
SpecOrganizer.new.run
|
|
67
46
|
end
|
|
68
47
|
|
|
69
48
|
task :default => :spec
|
|
@@ -87,3 +66,5 @@ namespace :release do
|
|
|
87
66
|
end
|
|
88
67
|
end
|
|
89
68
|
end
|
|
69
|
+
|
|
70
|
+
task :release => ['release:check_private_key', 'release:do']
|
data/lib/config/locales/en.yml
CHANGED
|
@@ -7,6 +7,7 @@ en:
|
|
|
7
7
|
message_title: "message"
|
|
8
8
|
summary_title: "summary"
|
|
9
9
|
resolution_title: "resolution"
|
|
10
|
+
|
|
10
11
|
ambiguous_relationship:
|
|
11
12
|
message: "Ambiguous associations %{candidates} defined on %{klass}."
|
|
12
13
|
summary:
|
|
@@ -43,6 +44,8 @@ en:
|
|
|
43
44
|
resolution: "Most likely this is caused by passing parameters directly
|
|
44
45
|
through to the find, and the parameter either is not present or the
|
|
45
46
|
key from which it is accessed is incorrect."
|
|
47
|
+
destroy_restrict_with_error_dependencies_exist:
|
|
48
|
+
"is not empty and prevents the document from being destroyed"
|
|
46
49
|
document_not_destroyed:
|
|
47
50
|
message: "%{klass} with id %{id} was not destroyed."
|
|
48
51
|
summary: "When calling %{klass}#destroy! and a callback halts the destroy
|
|
@@ -105,6 +108,32 @@ en:
|
|
|
105
108
|
summary: "An invalid dependent strategy was defined for the association:
|
|
106
109
|
%{association}. The valid strategies are: %{valid_strategies}."
|
|
107
110
|
resolution: "Change the dependent strategy to one of the valid types."
|
|
111
|
+
invalid_discriminator_key_target:
|
|
112
|
+
message: "Setting the discriminator key on a child class is not allowed."
|
|
113
|
+
summary: "The discriminator key on the class %{class_name} was attempted
|
|
114
|
+
to be changed. Changing the discriminator key on a child class is not
|
|
115
|
+
allowed."
|
|
116
|
+
resolution: "Try setting the discriminator key on %{superclass} or one of %{class_name}'s
|
|
117
|
+
ancestors."
|
|
118
|
+
invalid_elem_match_operator:
|
|
119
|
+
message: "Invalid $elemMatch operator '%{operator}'."
|
|
120
|
+
summary: "You misspelled an operator or are using an operator that
|
|
121
|
+
Mongoid does not support."
|
|
122
|
+
resolution: "Valid field operators are: %{valid_operators}.
|
|
123
|
+
Ensure you are using one of these operators."
|
|
124
|
+
invalid_estimated_count_criteria:
|
|
125
|
+
message: "Invalid criteria for estimated_count."
|
|
126
|
+
summary: "Estimated count is strictly a collection-level operation and cannot be called
|
|
127
|
+
on a filtered critera."
|
|
128
|
+
resolution: "Try calling estimated_count directly on the class: %{class_name}.estimated_count.\n\n
|
|
129
|
+
\_If the class defines a default scope, use unscoped: %{class_name}.unscoped.estimated_count."
|
|
130
|
+
invalid_expression_operator:
|
|
131
|
+
message: "Invalid expression operator '%{operator}'."
|
|
132
|
+
summary: "You misspelled an operator, are using an operator that
|
|
133
|
+
Mongoid does not support, or are trying to use a field-level
|
|
134
|
+
operator on expression level."
|
|
135
|
+
resolution: "Valid expression operators are: %{valid_operators}.
|
|
136
|
+
Ensure you are using one of these operators."
|
|
108
137
|
invalid_field:
|
|
109
138
|
message: "Defining a field named '%{name}' is not allowed."
|
|
110
139
|
summary: "Defining this field would override the method '%{name}',
|
|
@@ -118,6 +147,13 @@ en:
|
|
|
118
147
|
allowed, and don't use these names. These include names that also
|
|
119
148
|
conflict with core Ruby methods on Object, Module, Enumerable, or
|
|
120
149
|
included gems that inject methods into these or Mongoid internals."
|
|
150
|
+
invalid_field_operator:
|
|
151
|
+
message: "Invalid field operator '%{operator}'."
|
|
152
|
+
summary: "You misspelled an operator, are using an operator that
|
|
153
|
+
Mongoid does not support, or are trying to use an expression-level
|
|
154
|
+
operator on field level."
|
|
155
|
+
resolution: "Valid field operators are: %{valid_operators}.
|
|
156
|
+
Ensure you are using one of these operators."
|
|
121
157
|
invalid_field_option:
|
|
122
158
|
message: "Invalid option :%{option} provided for field :%{name}."
|
|
123
159
|
summary: "Mongoid requires that you only provide valid options on each
|
|
@@ -543,7 +579,7 @@ en:
|
|
|
543
579
|
the validations."
|
|
544
580
|
delete_restriction:
|
|
545
581
|
message: "Cannot delete %{document} because of dependent '%{relation}'."
|
|
546
|
-
summary: "When defining '%{relation}' with a :dependent => :
|
|
582
|
+
summary: "When defining '%{relation}' with a :dependent => :restrict_with_error,
|
|
547
583
|
Mongoid will raise an error when attempting to delete the
|
|
548
584
|
%{document} when the child '%{relation}' still has documents in it."
|
|
549
585
|
resolution: "Don't attempt to delete the parent %{document} when
|
data/lib/mongoid.rb
CHANGED
|
@@ -6,7 +6,6 @@ require "support/ruby_version"
|
|
|
6
6
|
require "forwardable"
|
|
7
7
|
require "time"
|
|
8
8
|
require "set"
|
|
9
|
-
require "ruby2_keywords"
|
|
10
9
|
|
|
11
10
|
require "active_support"
|
|
12
11
|
require "active_support/core_ext"
|
|
@@ -112,4 +111,27 @@ module Mongoid
|
|
|
112
111
|
#
|
|
113
112
|
# @since 1.0.0
|
|
114
113
|
def_delegators Config, *(Config.public_instance_methods(false) - [ :logger=, :logger ])
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
# Module used to prepend the discriminator key assignment function to change
|
|
117
|
+
# the value assigned to the discriminator key to a string.
|
|
118
|
+
#
|
|
119
|
+
# @api private
|
|
120
|
+
module GlobalDiscriminatorKeyAssignment
|
|
121
|
+
# This class is used for obtaining the method definition location for
|
|
122
|
+
# Mongoid methods.
|
|
123
|
+
class InvalidFieldHost
|
|
124
|
+
include Mongoid::Document
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def discriminator_key=(value)
|
|
128
|
+
Mongoid::Fields::Validators::Macro.validate_field_name(InvalidFieldHost, value)
|
|
129
|
+
value = value.to_s
|
|
130
|
+
super
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
class << self
|
|
135
|
+
prepend GlobalDiscriminatorKeyAssignment
|
|
136
|
+
end
|
|
115
137
|
end
|
|
@@ -41,11 +41,6 @@ module Mongoid
|
|
|
41
41
|
:restrict_with_error
|
|
42
42
|
]
|
|
43
43
|
|
|
44
|
-
# The error message when a strategy cannot delete objects because there are associated objects.
|
|
45
|
-
#
|
|
46
|
-
# @since 7.0
|
|
47
|
-
RESTRICT_ERROR_MSG = 'Cannot delete record because associated objects exist.'.freeze
|
|
48
|
-
|
|
49
44
|
# Attempt to add the cascading information for the document to know how
|
|
50
45
|
# to handle associated documents on a removal.
|
|
51
46
|
#
|
|
@@ -131,7 +126,7 @@ module Mongoid
|
|
|
131
126
|
|
|
132
127
|
def _dependent_restrict_with_error!(association)
|
|
133
128
|
if (relation = send(association.name)) && !relation.blank?
|
|
134
|
-
errors.add(association.name,
|
|
129
|
+
errors.add(association.name, :destroy_restrict_with_error_dependencies_exist)
|
|
135
130
|
throw(:abort, false)
|
|
136
131
|
end
|
|
137
132
|
end
|
|
@@ -415,7 +415,7 @@ module Mongoid
|
|
|
415
415
|
# @param [ Proc ] block Optional block to pass.
|
|
416
416
|
#
|
|
417
417
|
# @return [ Criteria, Object ] A Criteria or return value from the target.
|
|
418
|
-
|
|
418
|
+
def method_missing(name, *args, &block)
|
|
419
419
|
return super if _target.respond_to?(name)
|
|
420
420
|
klass.send(:with_scope, criteria) do
|
|
421
421
|
criteria.public_send(name, *args, &block)
|
|
@@ -11,7 +11,7 @@ module Mongoid
|
|
|
11
11
|
include ::Enumerable
|
|
12
12
|
|
|
13
13
|
def_delegators :criteria, :avg, :max, :min, :sum
|
|
14
|
-
def_delegators :_target, :length, :size
|
|
14
|
+
def_delegators :_target, :length, :size, :any?
|
|
15
15
|
|
|
16
16
|
# Is the association empty?
|
|
17
17
|
#
|
|
@@ -22,7 +22,7 @@ module Mongoid
|
|
|
22
22
|
#
|
|
23
23
|
# @since 2.1.0
|
|
24
24
|
def blank?
|
|
25
|
-
|
|
25
|
+
!any?
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
# Creates a new document on the references many association. This will
|
|
@@ -207,7 +207,7 @@ module Mongoid
|
|
|
207
207
|
#
|
|
208
208
|
# @return [ Document ] A matching document or a new/created one.
|
|
209
209
|
def find_or(method, attrs = {}, type = nil, &block)
|
|
210
|
-
attrs[
|
|
210
|
+
attrs[klass.discriminator_key] = type.discriminator_value if type
|
|
211
211
|
where(attrs).first || send(method, attrs, type, &block)
|
|
212
212
|
end
|
|
213
213
|
end
|
|
@@ -133,7 +133,7 @@ module Mongoid
|
|
|
133
133
|
# @param [ String, Symbol ] name The name of the method.
|
|
134
134
|
# @param [ Array ] args The arguments passed to the method.
|
|
135
135
|
#
|
|
136
|
-
|
|
136
|
+
def method_missing(name, *args, &block)
|
|
137
137
|
_target.send(name, *args, &block)
|
|
138
138
|
end
|
|
139
139
|
|
|
@@ -101,7 +101,7 @@ module Mongoid
|
|
|
101
101
|
|
|
102
102
|
# Delete the document from the association. This will set the foreign key
|
|
103
103
|
# on the document to nil. If the dependent options on the association are
|
|
104
|
-
# :
|
|
104
|
+
# :delete_all or :destroy the appropriate removal will occur.
|
|
105
105
|
#
|
|
106
106
|
# @example Delete the document.
|
|
107
107
|
# person.posts.delete(post)
|
|
@@ -216,6 +216,40 @@ module Mongoid
|
|
|
216
216
|
end
|
|
217
217
|
end
|
|
218
218
|
|
|
219
|
+
# Returns whether the association has any documents, optionally
|
|
220
|
+
# subject to the provided filters.
|
|
221
|
+
#
|
|
222
|
+
# This method returns true if the association has any persisted
|
|
223
|
+
# documents and if it has any not yet persisted documents.
|
|
224
|
+
#
|
|
225
|
+
# If the association is already loaded, this method inspects the
|
|
226
|
+
# loaded documents and does not query the database. If the
|
|
227
|
+
# association is not loaded, the argument-less and block-less
|
|
228
|
+
# version does not load the association; the other versions
|
|
229
|
+
# (that delegate to Enumerable) may or may not load the association
|
|
230
|
+
# completely depending on whether it is iterated to completion.
|
|
231
|
+
#
|
|
232
|
+
# This method can take a parameter and a block. The behavior with
|
|
233
|
+
# either the paramater or the block is delegated to the standard
|
|
234
|
+
# library Enumerable module.
|
|
235
|
+
#
|
|
236
|
+
# Note that when Enumerable's any? method is invoked with both
|
|
237
|
+
# a block and a pattern, it only uses the pattern.
|
|
238
|
+
#
|
|
239
|
+
# @param [ Object ] condition The condition that documents
|
|
240
|
+
# must satisfy. See Enumerable documentation for details.
|
|
241
|
+
#
|
|
242
|
+
# @return [ true, false ] If the association has any documents.
|
|
243
|
+
def any?(*args)
|
|
244
|
+
return super if args.any? || block_given?
|
|
245
|
+
|
|
246
|
+
if _loaded?
|
|
247
|
+
in_memory.length > 0
|
|
248
|
+
else
|
|
249
|
+
_unloaded.exists? || _added.length > 0
|
|
250
|
+
end
|
|
251
|
+
end
|
|
252
|
+
|
|
219
253
|
# Get the first document in the enumerable. Will check the persisted
|
|
220
254
|
# documents first. Does not load the entire enumerable.
|
|
221
255
|
#
|
|
@@ -395,7 +429,8 @@ module Mongoid
|
|
|
395
429
|
#
|
|
396
430
|
# @since 2.1.0
|
|
397
431
|
def reset
|
|
398
|
-
_loaded.clear
|
|
432
|
+
_loaded.clear
|
|
433
|
+
_added.clear
|
|
399
434
|
@executed = false
|
|
400
435
|
end
|
|
401
436
|
|
|
@@ -498,7 +533,7 @@ module Mongoid
|
|
|
498
533
|
end
|
|
499
534
|
end
|
|
500
535
|
|
|
501
|
-
|
|
536
|
+
def method_missing(name, *args, &block)
|
|
502
537
|
entries.send(name, *args, &block)
|
|
503
538
|
end
|
|
504
539
|
|
|
@@ -90,7 +90,7 @@ module Mongoid
|
|
|
90
90
|
|
|
91
91
|
# Delete the document from the association. This will set the foreign key
|
|
92
92
|
# on the document to nil. If the dependent options on the association are
|
|
93
|
-
# :
|
|
93
|
+
# :delete_all or :destroy the appropriate removal will occur.
|
|
94
94
|
#
|
|
95
95
|
# @example Delete the document.
|
|
96
96
|
# person.posts.delete(post)
|
|
@@ -170,6 +170,13 @@ module Mongoid
|
|
|
170
170
|
|
|
171
171
|
# Determine if any documents in this association exist in the database.
|
|
172
172
|
#
|
|
173
|
+
# If the association contains documents but all of the documents
|
|
174
|
+
# exist only in the application, i.e. have not been persisted to the
|
|
175
|
+
# database, this method returns false.
|
|
176
|
+
#
|
|
177
|
+
# This method queries the database on each invocation even if the
|
|
178
|
+
# association is already loaded into memory.
|
|
179
|
+
#
|
|
173
180
|
# @example Are there persisted documents?
|
|
174
181
|
# person.posts.exists?
|
|
175
182
|
#
|
|
@@ -436,7 +443,7 @@ module Mongoid
|
|
|
436
443
|
# @return [ Criteria, Object ] A Criteria or return value from the target.
|
|
437
444
|
#
|
|
438
445
|
# @since 2.0.0.beta.1
|
|
439
|
-
|
|
446
|
+
def method_missing(name, *args, &block)
|
|
440
447
|
if _target.respond_to?(name)
|
|
441
448
|
_target.send(name, *args, &block)
|
|
442
449
|
else
|
|
@@ -54,14 +54,9 @@ module Mongoid
|
|
|
54
54
|
#
|
|
55
55
|
# @since 2.0.0.rc.1
|
|
56
56
|
def substitute(replacement)
|
|
57
|
-
# If the same object currently associated is being assigned,
|
|
58
|
-
# rebind the association and save the target but do not destroy
|
|
59
|
-
# the target.
|
|
60
|
-
|
|
61
57
|
unbind_one
|
|
62
58
|
if persistable?
|
|
63
|
-
|
|
64
|
-
if _association.destructive? && self != replacement
|
|
59
|
+
if _association.destructive?
|
|
65
60
|
send(_association.dependent)
|
|
66
61
|
else
|
|
67
62
|
save if persisted?
|
|
@@ -193,7 +193,7 @@ module Mongoid
|
|
|
193
193
|
def push_conflict?(field)
|
|
194
194
|
name = field.split(".", 2)[0]
|
|
195
195
|
set_fields.has_key?(name) || pull_fields.has_key?(name) ||
|
|
196
|
-
(push_fields.keys.count { |item| item
|
|
196
|
+
(push_fields.keys.count { |item| item.split('.', 2).first == name } > 1)
|
|
197
197
|
end
|
|
198
198
|
|
|
199
199
|
# Get the conflicting pull modifications.
|
data/lib/mongoid/attributes.rb
CHANGED
|
@@ -160,11 +160,6 @@ module Mongoid
|
|
|
160
160
|
# @since 1.0.0
|
|
161
161
|
def write_attribute(name, value)
|
|
162
162
|
field_name = database_field_name(name)
|
|
163
|
-
|
|
164
|
-
if attribute_missing?(field_name)
|
|
165
|
-
raise ActiveModel::MissingAttributeError, "Missing attribute: '#{name}'"
|
|
166
|
-
end
|
|
167
|
-
|
|
168
163
|
if attribute_writable?(field_name)
|
|
169
164
|
_assigning do
|
|
170
165
|
validate_attribute_value(field_name, value)
|
|
@@ -182,8 +177,6 @@ module Mongoid
|
|
|
182
177
|
end
|
|
183
178
|
typed_value
|
|
184
179
|
end
|
|
185
|
-
else
|
|
186
|
-
# TODO: MONGOID-5072
|
|
187
180
|
end
|
|
188
181
|
end
|
|
189
182
|
alias :[]= :write_attribute
|
|
@@ -301,7 +294,7 @@ module Mongoid
|
|
|
301
294
|
def read_raw_attribute(name)
|
|
302
295
|
normalized = database_field_name(name.to_s)
|
|
303
296
|
if attribute_missing?(normalized)
|
|
304
|
-
raise ActiveModel::MissingAttributeError, "Missing attribute: '#{name}'"
|
|
297
|
+
raise ActiveModel::MissingAttributeError, "Missing attribute: '#{name}'."
|
|
305
298
|
end
|
|
306
299
|
if hash_dot_syntax?(normalized)
|
|
307
300
|
attributes.__nested__(normalized)
|