mongoid 7.5.0 → 8.0.2
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/README.md +3 -3
- data/lib/config/locales/en.yml +47 -30
- data/lib/mongoid/association/accessors.rb +38 -9
- data/lib/mongoid/association/bindable.rb +50 -2
- data/lib/mongoid/association/builders.rb +4 -2
- data/lib/mongoid/association/constrainable.rb +0 -1
- data/lib/mongoid/association/eager_loadable.rb +29 -7
- data/lib/mongoid/association/embedded/batchable.rb +53 -13
- data/lib/mongoid/association/embedded/cyclic.rb +1 -1
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +24 -2
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +2 -2
- data/lib/mongoid/association/embedded/embedded_in.rb +3 -2
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +1 -0
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +1 -1
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +50 -28
- data/lib/mongoid/association/embedded/embeds_many.rb +2 -2
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +18 -4
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +23 -4
- data/lib/mongoid/association/embedded/embeds_one.rb +3 -3
- data/lib/mongoid/association/macros.rb +2 -1
- data/lib/mongoid/association/many.rb +11 -7
- data/lib/mongoid/association/nested/many.rb +5 -4
- data/lib/mongoid/association/nested/nested_buildable.rb +4 -4
- data/lib/mongoid/association/nested/one.rb +5 -5
- data/lib/mongoid/association/one.rb +2 -2
- data/lib/mongoid/association/options.rb +9 -9
- data/lib/mongoid/association/proxy.rb +14 -3
- data/lib/mongoid/association/referenced/auto_save.rb +4 -3
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +1 -0
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +5 -6
- data/lib/mongoid/association/referenced/belongs_to.rb +2 -2
- data/lib/mongoid/association/referenced/counter_cache.rb +10 -10
- data/lib/mongoid/association/referenced/eager.rb +2 -2
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +66 -13
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +6 -3
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +20 -28
- data/lib/mongoid/association/referenced/has_many/proxy.rb +24 -18
- data/lib/mongoid/association/referenced/has_many.rb +3 -3
- data/lib/mongoid/association/referenced/has_one/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +5 -5
- data/lib/mongoid/association/referenced/has_one/proxy.rb +9 -12
- data/lib/mongoid/association/referenced/has_one.rb +3 -3
- data/lib/mongoid/association/referenced/syncable.rb +4 -4
- data/lib/mongoid/association/reflections.rb +2 -2
- data/lib/mongoid/association/relatable.rb +44 -10
- data/lib/mongoid/association.rb +5 -5
- data/lib/mongoid/atomic/modifiers.rb +2 -2
- data/lib/mongoid/atomic/paths/embedded/many.rb +19 -0
- data/lib/mongoid/attributes/dynamic.rb +3 -3
- data/lib/mongoid/attributes/nested.rb +5 -5
- data/lib/mongoid/attributes/processing.rb +10 -3
- data/lib/mongoid/attributes/projector.rb +1 -1
- data/lib/mongoid/attributes/readonly.rb +2 -2
- data/lib/mongoid/attributes.rb +43 -40
- data/lib/mongoid/changeable.rb +42 -7
- data/lib/mongoid/clients/options.rb +5 -1
- data/lib/mongoid/clients/sessions.rb +2 -14
- data/lib/mongoid/clients/validators/storage.rb +3 -3
- data/lib/mongoid/config/validators/client.rb +6 -6
- data/lib/mongoid/config.rb +27 -17
- data/lib/mongoid/contextual/aggregable/memory.rb +24 -16
- data/lib/mongoid/contextual/aggregable/mongo.rb +5 -5
- data/lib/mongoid/contextual/aggregable/none.rb +1 -1
- data/lib/mongoid/contextual/atomic.rb +1 -1
- data/lib/mongoid/contextual/geo_near.rb +7 -7
- data/lib/mongoid/contextual/map_reduce.rb +2 -2
- data/lib/mongoid/contextual/memory.rb +59 -32
- data/lib/mongoid/contextual/mongo.rb +184 -256
- data/lib/mongoid/contextual/none.rb +34 -16
- data/lib/mongoid/contextual/queryable.rb +1 -1
- data/lib/mongoid/contextual.rb +2 -2
- data/lib/mongoid/copyable.rb +32 -8
- data/lib/mongoid/criteria/findable.rb +7 -4
- data/lib/mongoid/criteria/includable.rb +24 -20
- data/lib/mongoid/criteria/marshalable.rb +10 -2
- data/lib/mongoid/criteria/permission.rb +1 -1
- data/lib/mongoid/criteria/queryable/aggregable.rb +2 -2
- data/lib/mongoid/criteria/queryable/extensions/array.rb +2 -15
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +25 -4
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +2 -2
- data/lib/mongoid/criteria/queryable/extensions/date.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +0 -16
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +1 -1
- data/lib/mongoid/criteria/queryable/extensions/object.rb +2 -1
- data/lib/mongoid/criteria/queryable/extensions/range.rb +13 -5
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +3 -3
- data/lib/mongoid/criteria/queryable/extensions/set.rb +1 -1
- data/lib/mongoid/criteria/queryable/extensions/string.rb +3 -3
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +4 -2
- data/lib/mongoid/criteria/queryable/extensions/time.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +6 -1
- data/lib/mongoid/criteria/queryable/key.rb +3 -3
- data/lib/mongoid/criteria/queryable/optional.rb +5 -11
- data/lib/mongoid/criteria/queryable/options.rb +2 -2
- data/lib/mongoid/criteria/queryable/pipeline.rb +1 -1
- data/lib/mongoid/criteria/queryable/selectable.rb +5 -27
- data/lib/mongoid/criteria/queryable/selector.rb +92 -7
- data/lib/mongoid/criteria/queryable/smash.rb +40 -7
- data/lib/mongoid/criteria/queryable.rb +12 -7
- data/lib/mongoid/criteria/scopable.rb +2 -2
- data/lib/mongoid/criteria.rb +15 -37
- data/lib/mongoid/deprecable.rb +36 -0
- data/lib/mongoid/deprecation.rb +25 -0
- data/lib/mongoid/document.rb +98 -36
- data/lib/mongoid/equality.rb +12 -12
- data/lib/mongoid/errors/document_not_found.rb +10 -6
- data/lib/mongoid/errors/invalid_config_option.rb +1 -1
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +1 -1
- data/lib/mongoid/errors/invalid_dot_dollar_assignment.rb +23 -0
- data/lib/mongoid/errors/invalid_field.rb +6 -2
- data/lib/mongoid/errors/invalid_field_type.rb +26 -0
- data/lib/mongoid/errors/invalid_relation.rb +1 -1
- data/lib/mongoid/errors/invalid_relation_option.rb +1 -1
- data/lib/mongoid/errors/invalid_session_use.rb +1 -1
- data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
- data/lib/mongoid/errors/mongoid_error.rb +3 -3
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +1 -1
- data/lib/mongoid/errors/no_client_database.rb +1 -1
- data/lib/mongoid/errors/no_client_hosts.rb +1 -1
- data/lib/mongoid/errors/readonly_attribute.rb +1 -1
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +1 -1
- data/lib/mongoid/errors/unknown_attribute.rb +1 -1
- data/lib/mongoid/errors.rb +2 -2
- data/lib/mongoid/extensions/array.rb +9 -7
- data/lib/mongoid/extensions/big_decimal.rb +29 -10
- data/lib/mongoid/extensions/binary.rb +42 -0
- data/lib/mongoid/extensions/boolean.rb +8 -2
- data/lib/mongoid/extensions/date.rb +26 -20
- data/lib/mongoid/extensions/date_time.rb +1 -1
- data/lib/mongoid/extensions/false_class.rb +1 -1
- data/lib/mongoid/extensions/float.rb +4 -5
- data/lib/mongoid/extensions/hash.rb +13 -6
- data/lib/mongoid/extensions/integer.rb +4 -5
- data/lib/mongoid/extensions/module.rb +1 -1
- data/lib/mongoid/extensions/object.rb +8 -6
- data/lib/mongoid/extensions/range.rb +41 -10
- data/lib/mongoid/extensions/regexp.rb +11 -4
- data/lib/mongoid/extensions/set.rb +11 -4
- data/lib/mongoid/extensions/string.rb +11 -22
- data/lib/mongoid/extensions/symbol.rb +4 -15
- data/lib/mongoid/extensions/time.rb +27 -16
- data/lib/mongoid/extensions/time_with_zone.rb +1 -2
- data/lib/mongoid/extensions/true_class.rb +1 -1
- data/lib/mongoid/extensions.rb +1 -0
- data/lib/mongoid/factory.rb +42 -7
- data/lib/mongoid/fields/foreign_key.rb +11 -4
- data/lib/mongoid/fields/localized.rb +2 -2
- data/lib/mongoid/fields/standard.rb +7 -7
- data/lib/mongoid/fields/validators/macro.rb +3 -9
- data/lib/mongoid/fields.rb +57 -15
- data/lib/mongoid/findable.rb +28 -22
- data/lib/mongoid/indexable/specification.rb +2 -2
- data/lib/mongoid/indexable/validators/options.rb +6 -2
- data/lib/mongoid/interceptable.rb +73 -13
- data/lib/mongoid/matchable.rb +1 -1
- data/lib/mongoid/matcher.rb +12 -7
- data/lib/mongoid/persistable/creatable.rb +18 -9
- data/lib/mongoid/persistable/deletable.rb +1 -1
- data/lib/mongoid/persistable/destroyable.rb +1 -1
- data/lib/mongoid/persistable/savable.rb +2 -2
- data/lib/mongoid/persistable/unsettable.rb +1 -1
- data/lib/mongoid/persistable/updatable.rb +19 -12
- data/lib/mongoid/persistable/upsertable.rb +1 -1
- data/lib/mongoid/persistable.rb +3 -3
- data/lib/mongoid/persistence_context.rb +22 -5
- data/lib/mongoid/query_cache.rb +8 -260
- data/lib/mongoid/railties/controller_runtime.rb +1 -1
- data/lib/mongoid/reloadable.rb +7 -3
- data/lib/mongoid/scopable.rb +17 -15
- data/lib/mongoid/selectable.rb +1 -2
- data/lib/mongoid/serializable.rb +10 -6
- data/lib/mongoid/stateful.rb +35 -9
- data/lib/mongoid/tasks/database.rb +0 -2
- data/lib/mongoid/threaded/lifecycle.rb +5 -5
- data/lib/mongoid/threaded.rb +9 -9
- data/lib/mongoid/timestamps/created.rb +1 -1
- data/lib/mongoid/timestamps/updated.rb +2 -2
- data/lib/mongoid/touchable.rb +2 -3
- data/lib/mongoid/traversable.rb +4 -3
- data/lib/mongoid/validatable/localizable.rb +1 -1
- data/lib/mongoid/validatable/macros.rb +0 -2
- data/lib/mongoid/validatable/presence.rb +2 -2
- data/lib/mongoid/validatable/uniqueness.rb +9 -8
- data/lib/mongoid/validatable.rb +6 -6
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid/warnings.rb +3 -4
- data/lib/mongoid.rb +1 -0
- data/spec/config/mongoid.yml +16 -0
- data/spec/integration/app_spec.rb +8 -12
- data/spec/integration/associations/belongs_to_spec.rb +18 -0
- data/spec/integration/associations/embedded_spec.rb +15 -0
- data/spec/integration/associations/embeds_many_spec.rb +15 -2
- data/spec/integration/associations/embeds_one_spec.rb +18 -0
- data/spec/integration/associations/foreign_key_spec.rb +9 -0
- data/spec/integration/associations/has_and_belongs_to_many_spec.rb +21 -0
- data/spec/integration/associations/has_one_spec.rb +97 -1
- data/spec/integration/associations/scope_option_spec.rb +1 -1
- data/spec/integration/callbacks_models.rb +95 -1
- data/spec/integration/callbacks_spec.rb +226 -4
- data/spec/integration/criteria/range_spec.rb +95 -1
- data/spec/integration/discriminator_key_spec.rb +115 -76
- data/spec/integration/dots_and_dollars_spec.rb +277 -0
- data/spec/integration/i18n_fallbacks_spec.rb +1 -15
- data/spec/integration/matcher_examples_spec.rb +20 -13
- data/spec/integration/matcher_operator_data/type_decimal.yml +3 -2
- data/spec/integration/matcher_operator_spec.rb +3 -5
- data/spec/integration/persistence/range_field_spec.rb +350 -0
- data/spec/mongoid/association/counter_cache_spec.rb +1 -1
- data/spec/mongoid/association/depending_spec.rb +9 -9
- data/spec/mongoid/association/eager_spec.rb +2 -1
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +2 -1
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +54 -0
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +69 -9
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +112 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +219 -8
- data/spec/mongoid/association/embedded/embeds_many_models.rb +157 -0
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +12 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +68 -0
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +25 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +19 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +28 -0
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +2 -1
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +54 -0
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +15 -0
- data/spec/mongoid/association/referenced/belongs_to_models.rb +11 -0
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +2 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +67 -4
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +25 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +35 -2
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +109 -0
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +2 -56
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +82 -13
- data/spec/mongoid/association/referenced/has_many_models.rb +3 -1
- data/spec/mongoid/association/referenced/has_many_spec.rb +25 -0
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +2 -2
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +107 -1
- data/spec/mongoid/association/referenced/has_one_models.rb +16 -0
- data/spec/mongoid/association/syncable_spec.rb +14 -0
- data/spec/mongoid/atomic/paths_spec.rb +0 -14
- data/spec/mongoid/attributes/nested_spec.rb +80 -11
- data/spec/mongoid/attributes/nested_spec_models.rb +48 -0
- data/spec/mongoid/attributes/projector_spec.rb +1 -5
- data/spec/mongoid/attributes_spec.rb +524 -27
- data/spec/mongoid/changeable_spec.rb +130 -13
- data/spec/mongoid/clients/factory_spec.rb +23 -30
- data/spec/mongoid/clients/sessions_spec.rb +0 -38
- data/spec/mongoid/clients_spec.rb +32 -2
- data/spec/mongoid/config_spec.rb +58 -13
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +396 -158
- data/spec/mongoid/contextual/aggregable/memory_table.yml +88 -0
- data/spec/mongoid/contextual/aggregable/memory_table_spec.rb +62 -0
- data/spec/mongoid/contextual/map_reduce_spec.rb +2 -16
- data/spec/mongoid/contextual/memory_spec.rb +521 -14
- data/spec/mongoid/contextual/mongo_spec.rb +564 -394
- data/spec/mongoid/contextual/none_spec.rb +11 -19
- data/spec/mongoid/copyable_spec.rb +451 -1
- data/spec/mongoid/criteria/findable_spec.rb +86 -210
- data/spec/mongoid/criteria/includable_spec.rb +1492 -0
- data/spec/mongoid/criteria/includable_spec_models.rb +54 -0
- data/spec/mongoid/criteria/marshalable_spec.rb +18 -1
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +7 -19
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +134 -26
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -15
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +73 -7
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/optional_spec.rb +0 -484
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +50 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +77 -85
- data/spec/mongoid/criteria/queryable/selector_spec.rb +14 -2
- data/spec/mongoid/criteria_spec.rb +469 -1201
- data/spec/mongoid/document_fields_spec.rb +173 -24
- data/spec/mongoid/document_spec.rb +32 -41
- data/spec/mongoid/equality_spec.rb +12 -12
- data/spec/mongoid/errors/document_not_found_spec.rb +29 -2
- data/spec/mongoid/errors/invalid_field_spec.rb +1 -1
- data/spec/mongoid/errors/invalid_field_type_spec.rb +55 -0
- data/spec/mongoid/errors/mongoid_error_spec.rb +3 -1
- data/spec/mongoid/errors/no_environment_spec.rb +3 -3
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +1 -1
- data/spec/mongoid/extensions/array_spec.rb +16 -2
- data/spec/mongoid/extensions/big_decimal_spec.rb +697 -212
- data/spec/mongoid/extensions/binary_spec.rb +44 -9
- data/spec/mongoid/extensions/boolean_spec.rb +68 -82
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +7 -3
- data/spec/mongoid/extensions/date_spec.rb +71 -1
- data/spec/mongoid/extensions/date_time_spec.rb +15 -9
- data/spec/mongoid/extensions/float_spec.rb +48 -76
- data/spec/mongoid/extensions/hash_spec.rb +30 -0
- data/spec/mongoid/extensions/integer_spec.rb +45 -66
- data/spec/mongoid/extensions/range_spec.rb +255 -54
- data/spec/mongoid/extensions/regexp_spec.rb +58 -33
- data/spec/mongoid/extensions/set_spec.rb +106 -0
- data/spec/mongoid/extensions/string_spec.rb +53 -25
- data/spec/mongoid/extensions/symbol_spec.rb +18 -25
- data/spec/mongoid/extensions/time_spec.rb +634 -66
- data/spec/mongoid/extensions/time_with_zone_spec.rb +17 -31
- data/spec/mongoid/factory_spec.rb +61 -1
- data/spec/mongoid/fields_spec.rb +321 -50
- data/spec/mongoid/findable_spec.rb +64 -29
- data/spec/mongoid/indexable/specification_spec.rb +2 -2
- data/spec/mongoid/indexable_spec.rb +39 -20
- data/spec/mongoid/interceptable_spec.rb +584 -5
- data/spec/mongoid/interceptable_spec_models.rb +235 -4
- data/spec/mongoid/matcher/extract_attribute_spec.rb +1 -5
- data/spec/mongoid/mongoizable_spec.rb +285 -0
- data/spec/mongoid/persistable/creatable_spec.rb +2 -2
- data/spec/mongoid/persistable/deletable_spec.rb +2 -2
- data/spec/mongoid/persistable/destroyable_spec.rb +2 -2
- data/spec/mongoid/persistable/upsertable_spec.rb +14 -0
- data/spec/mongoid/persistence_context_spec.rb +50 -1
- data/spec/mongoid/query_cache_middleware_spec.rb +0 -18
- data/spec/mongoid/query_cache_spec.rb +0 -154
- data/spec/mongoid/reloadable_spec.rb +35 -2
- data/spec/mongoid/scopable_spec.rb +54 -16
- data/spec/mongoid/shardable_spec.rb +14 -0
- data/spec/mongoid/stateful_spec.rb +28 -0
- data/spec/mongoid/timestamps_spec.rb +390 -0
- data/spec/mongoid/timestamps_spec_models.rb +67 -0
- data/spec/mongoid/touchable_spec.rb +116 -0
- data/spec/mongoid/touchable_spec_models.rb +12 -8
- data/spec/mongoid/traversable_spec.rb +4 -11
- data/spec/mongoid/validatable/presence_spec.rb +1 -1
- data/spec/mongoid/validatable/uniqueness_spec.rb +60 -31
- data/spec/mongoid/warnings_spec.rb +35 -0
- data/spec/rails/controller_extension/controller_runtime_spec.rb +2 -2
- data/spec/rails/mongoid_spec.rb +4 -16
- data/spec/shared/lib/mrss/event_subscriber.rb +5 -15
- data/spec/support/constraints.rb +24 -0
- data/spec/support/macros.rb +30 -0
- data/spec/support/models/augmentation.rb +12 -0
- data/spec/support/models/band.rb +3 -0
- data/spec/support/models/catalog.rb +24 -0
- data/spec/support/models/circus.rb +3 -0
- data/spec/support/models/fanatic.rb +8 -0
- data/spec/support/models/implant.rb +9 -0
- data/spec/support/models/label.rb +2 -0
- data/spec/support/models/passport.rb +9 -0
- data/spec/support/models/person.rb +1 -0
- data/spec/support/models/player.rb +2 -0
- data/spec/support/models/powerup.rb +12 -0
- data/spec/support/models/registry.rb +1 -0
- data/spec/support/models/school.rb +14 -0
- data/spec/support/models/shield.rb +18 -0
- data/spec/support/models/student.rb +14 -0
- data/spec/support/models/weapon.rb +12 -0
- data.tar.gz.sig +0 -0
- metadata +49 -13
- metadata.gz.sig +0 -0
- data/lib/mongoid/errors/eager_load.rb +0 -23
- data/lib/mongoid/errors/invalid_value.rb +0 -17
- data/spec/mongoid/errors/eager_load_spec.rb +0 -31
@@ -20,9 +20,9 @@ module Mongoid
|
|
20
20
|
# @example Mongoize the object.
|
21
21
|
# object.mongoize
|
22
22
|
#
|
23
|
-
# @return [
|
23
|
+
# @return [ String | BSON::Decimal128 | nil ] The object or nil.
|
24
24
|
def mongoize
|
25
|
-
|
25
|
+
::BigDecimal.mongoize(self)
|
26
26
|
end
|
27
27
|
|
28
28
|
# Is the BigDecimal a number?
|
@@ -39,26 +39,45 @@ module Mongoid
|
|
39
39
|
|
40
40
|
# Convert the object from its mongo friendly ruby type to this type.
|
41
41
|
#
|
42
|
-
# @example Demongoize the object.
|
43
|
-
# Object.demongoize(object)
|
44
|
-
#
|
45
42
|
# @param [ Object ] object The object to demongoize.
|
46
43
|
#
|
47
|
-
# @return [ BigDecimal
|
44
|
+
# @return [ BigDecimal | nil ] A BigDecimal derived from the object or nil.
|
48
45
|
def demongoize(object)
|
49
|
-
|
46
|
+
return if object.blank?
|
47
|
+
if object.is_a?(BSON::Decimal128)
|
48
|
+
object.to_big_decimal
|
49
|
+
elsif object.numeric?
|
50
|
+
BigDecimal(object.to_s)
|
51
|
+
elsif object.numeric?
|
52
|
+
object.to_d
|
53
|
+
end
|
50
54
|
end
|
51
55
|
|
52
|
-
# Mongoize an object of any type to how it's stored in the db
|
56
|
+
# Mongoize an object of any type to how it's stored in the db.
|
53
57
|
#
|
54
58
|
# @example Mongoize the object.
|
55
59
|
# BigDecimal.mongoize(123)
|
56
60
|
#
|
57
61
|
# @param [ Object ] object The object to Mongoize
|
58
62
|
#
|
59
|
-
# @return [ String
|
63
|
+
# @return [ String | BSON::Decimal128 | nil ] A String or Decimal128
|
64
|
+
# representing the object or nil. String if Mongoid.map_big_decimal_to_decimal128
|
65
|
+
# is false, BSON::Decimal128 otherwise.
|
60
66
|
def mongoize(object)
|
61
|
-
|
67
|
+
return if object.blank?
|
68
|
+
if Mongoid.map_big_decimal_to_decimal128
|
69
|
+
if object.is_a?(BSON::Decimal128)
|
70
|
+
object
|
71
|
+
elsif object.is_a?(BigDecimal)
|
72
|
+
BSON::Decimal128.new(object)
|
73
|
+
elsif object.numeric?
|
74
|
+
BSON::Decimal128.new(object.to_s)
|
75
|
+
end
|
76
|
+
else
|
77
|
+
if object.is_a?(BSON::Decimal128) || object.numeric?
|
78
|
+
object.to_s
|
79
|
+
end
|
80
|
+
end
|
62
81
|
end
|
63
82
|
end
|
64
83
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mongoid
|
4
|
+
module Extensions
|
5
|
+
module Binary
|
6
|
+
|
7
|
+
# Turn the object from the ruby type we deal with to a Mongo friendly
|
8
|
+
# type.
|
9
|
+
#
|
10
|
+
# @example Mongoize the object.
|
11
|
+
# object.mongoize
|
12
|
+
#
|
13
|
+
# @return [ BSON::Binary | nil ] The object.
|
14
|
+
def mongoize
|
15
|
+
BSON::Binary.mongoize(self)
|
16
|
+
end
|
17
|
+
|
18
|
+
module ClassMethods
|
19
|
+
|
20
|
+
# Mongoize an object of any type to how it's stored in the db.
|
21
|
+
#
|
22
|
+
# @example Mongoize the object.
|
23
|
+
# BigDecimal.mongoize(123)
|
24
|
+
#
|
25
|
+
# @param [ Object ] object The object to Mongoize
|
26
|
+
#
|
27
|
+
# @return [ BSON::Binary | nil ] A Binary representing the object or nil.
|
28
|
+
def mongoize(object)
|
29
|
+
return if object.nil?
|
30
|
+
case object
|
31
|
+
when BSON::Binary then object
|
32
|
+
when String, Symbol then BSON::Binary.new(object.to_s)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
alias :demongoize :mongoize
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
BSON::Binary.__send__(:include, Mongoid::Extensions::Binary)
|
42
|
+
BSON::Binary.extend(Mongoid::Extensions::Binary::ClassMethods)
|
@@ -11,10 +11,16 @@ module Mongoid
|
|
11
11
|
# @example Mongoize the object.
|
12
12
|
# Boolean.mongoize("123.11")
|
13
13
|
#
|
14
|
-
# @return [
|
14
|
+
# @return [ true | false | nil ] The object mongoized or nil.
|
15
15
|
def mongoize(object)
|
16
|
-
|
16
|
+
return if object.nil?
|
17
|
+
if object.to_s =~ (/\A(true|t|yes|y|on|1|1.0)\z/i)
|
18
|
+
true
|
19
|
+
elsif object.to_s =~ (/\A(false|f|no|n|off|0|0.0)\z/i)
|
20
|
+
false
|
21
|
+
end
|
17
22
|
end
|
23
|
+
alias :demongoize :mongoize
|
18
24
|
end
|
19
25
|
end
|
20
26
|
end
|
@@ -4,12 +4,6 @@ module Mongoid
|
|
4
4
|
module Extensions
|
5
5
|
module Date
|
6
6
|
|
7
|
-
# Constant for epoch - used when passing invalid times.
|
8
|
-
#
|
9
|
-
# @deprecated No longer used as a return value from #mongoize passed
|
10
|
-
# an invalid date string.
|
11
|
-
EPOCH = ::Date.new(1970, 1, 1)
|
12
|
-
|
13
7
|
# Convert the date into a time.
|
14
8
|
#
|
15
9
|
# @example Convert the date to a time.
|
@@ -43,9 +37,20 @@ module Mongoid
|
|
43
37
|
#
|
44
38
|
# @param [ Time ] object The time from Mongo.
|
45
39
|
#
|
46
|
-
# @return [ Date ] The object as a date.
|
40
|
+
# @return [ Date | nil ] The object as a date or nil.
|
47
41
|
def demongoize(object)
|
48
|
-
|
42
|
+
return if object.nil?
|
43
|
+
if object.is_a?(String)
|
44
|
+
object = begin
|
45
|
+
object.__mongoize_time__
|
46
|
+
rescue ArgumentError
|
47
|
+
nil
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
if object.acts_like?(:time) || object.acts_like?(:date)
|
52
|
+
::Date.new(object.year, object.month, object.day)
|
53
|
+
end
|
49
54
|
end
|
50
55
|
|
51
56
|
# Turn the object from the ruby type we deal with to a Mongo friendly
|
@@ -56,20 +61,21 @@ module Mongoid
|
|
56
61
|
#
|
57
62
|
# @param [ Object ] object The object to mongoize.
|
58
63
|
#
|
59
|
-
# @return [ Time ] The object mongoized.
|
64
|
+
# @return [ Time | nil ] The object mongoized or nil.
|
60
65
|
def mongoize(object)
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
end
|
69
|
-
::Time.utc(time.year, time.month, time.day)
|
70
|
-
rescue ArgumentError
|
71
|
-
nil
|
66
|
+
return if object.blank?
|
67
|
+
begin
|
68
|
+
if object.is_a?(String)
|
69
|
+
# https://jira.mongodb.org/browse/MONGOID-4460
|
70
|
+
time = ::Time.parse(object)
|
71
|
+
else
|
72
|
+
time = object.__mongoize_time__
|
72
73
|
end
|
74
|
+
rescue ArgumentError
|
75
|
+
nil
|
76
|
+
end
|
77
|
+
if time.acts_like?(:time)
|
78
|
+
::Time.utc(time.year, time.month, time.day)
|
73
79
|
end
|
74
80
|
end
|
75
81
|
end
|
@@ -39,7 +39,7 @@ module Mongoid
|
|
39
39
|
#
|
40
40
|
# @param [ Time ] object The time from Mongo.
|
41
41
|
#
|
42
|
-
# @return [ DateTime ] The object as a
|
42
|
+
# @return [ DateTime | nil ] The object as a datetime or nil.
|
43
43
|
def demongoize(object)
|
44
44
|
::Time.demongoize(object).try(:to_datetime)
|
45
45
|
end
|
@@ -21,7 +21,7 @@ module Mongoid
|
|
21
21
|
#
|
22
22
|
# @param [ Class ] other The class to check.
|
23
23
|
#
|
24
|
-
# @return [ true
|
24
|
+
# @return [ true | false ] If the other is a boolean.
|
25
25
|
def is_a?(other)
|
26
26
|
if other == Mongoid::Boolean || other.class == Mongoid::Boolean
|
27
27
|
return true
|
@@ -34,12 +34,11 @@ module Mongoid
|
|
34
34
|
#
|
35
35
|
# @param [ Object ] object The object to mongoize.
|
36
36
|
#
|
37
|
-
# @return [
|
37
|
+
# @return [ Float | nil ] The object mongoized or nil.
|
38
38
|
def mongoize(object)
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
nil
|
39
|
+
return if object.blank?
|
40
|
+
if object.numeric?
|
41
|
+
object.to_f
|
43
42
|
end
|
44
43
|
end
|
45
44
|
alias :demongoize :mongoize
|
@@ -11,7 +11,7 @@ module Mongoid
|
|
11
11
|
#
|
12
12
|
# @return [ Hash ] The converted hash.
|
13
13
|
def __evolve_object_id__
|
14
|
-
|
14
|
+
transform_values!(&:__evolve_object_id__)
|
15
15
|
end
|
16
16
|
|
17
17
|
# Mongoizes each value in the hash to an object id if it is convertable.
|
@@ -24,7 +24,7 @@ module Mongoid
|
|
24
24
|
if id = self['$oid']
|
25
25
|
BSON::ObjectId.from_string(id)
|
26
26
|
else
|
27
|
-
|
27
|
+
transform_values!(&:__mongoize_object_id__)
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
@@ -148,7 +148,7 @@ module Mongoid
|
|
148
148
|
# @example Mongoize the object.
|
149
149
|
# object.mongoize
|
150
150
|
#
|
151
|
-
# @return [ Hash ] The object.
|
151
|
+
# @return [ Hash | nil ] The object mongoized or nil.
|
152
152
|
def mongoize
|
153
153
|
::Hash.mongoize(self)
|
154
154
|
end
|
@@ -190,7 +190,7 @@ module Mongoid
|
|
190
190
|
#
|
191
191
|
# @param [ String ] operator The operator.
|
192
192
|
# @param [ Class ] klass The model class.
|
193
|
-
# @param [ String
|
193
|
+
# @param [ String | Symbol ] key The field key.
|
194
194
|
# @param [ Object ] value The value to mongoize.
|
195
195
|
#
|
196
196
|
# @return [ Object ] The mongoized value.
|
@@ -217,10 +217,15 @@ module Mongoid
|
|
217
217
|
#
|
218
218
|
# @param [ Object ] object The object to mongoize.
|
219
219
|
#
|
220
|
-
# @return [ Hash ] The object mongoized.
|
220
|
+
# @return [ Hash | nil ] The object mongoized or nil.
|
221
221
|
def mongoize(object)
|
222
222
|
return if object.nil?
|
223
|
-
|
223
|
+
if object.is_a?(Hash)
|
224
|
+
# Need to use transform_values! which maintains the BSON::Document
|
225
|
+
# instead of transform_values which always returns a hash. To do this,
|
226
|
+
# we first need to dup the hash.
|
227
|
+
object.dup.transform_values!(&:mongoize)
|
228
|
+
end
|
224
229
|
end
|
225
230
|
|
226
231
|
# Can the size of this object change?
|
@@ -239,3 +244,5 @@ end
|
|
239
244
|
|
240
245
|
::Hash.__send__(:include, Mongoid::Extensions::Hash)
|
241
246
|
::Hash.extend(Mongoid::Extensions::Hash::ClassMethods)
|
247
|
+
|
248
|
+
::Mongoid.deprecate(Hash, :blank_criteria)
|
@@ -42,12 +42,11 @@ module Mongoid
|
|
42
42
|
# @example Mongoize the object.
|
43
43
|
# BigDecimal.mongoize("123.11")
|
44
44
|
#
|
45
|
-
# @return [
|
45
|
+
# @return [ Integer | nil ] The object mongoized or nil.
|
46
46
|
def mongoize(object)
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
nil
|
47
|
+
return if object.blank?
|
48
|
+
if object.numeric?
|
49
|
+
object.to_i
|
51
50
|
end
|
52
51
|
end
|
53
52
|
alias :demongoize :mongoize
|
@@ -90,10 +90,10 @@ module Mongoid
|
|
90
90
|
# @example Do or do not.
|
91
91
|
# object.do_or_do_not(:use, "The Force")
|
92
92
|
#
|
93
|
-
# @param [ String
|
93
|
+
# @param [ String | Symbol ] name The method name.
|
94
94
|
# @param [ Array ] args The arguments.
|
95
95
|
#
|
96
|
-
# @return [ Object
|
96
|
+
# @return [ Object | nil ] The result of the method call or nil if the
|
97
97
|
# method does not exist.
|
98
98
|
def do_or_do_not(name, *args)
|
99
99
|
send(name, *args) if name && respond_to?(name)
|
@@ -106,7 +106,7 @@ module Mongoid
|
|
106
106
|
#
|
107
107
|
# @param [ String ] name The name of the variable.
|
108
108
|
#
|
109
|
-
# @return [ Object
|
109
|
+
# @return [ Object | false ] The value or false.
|
110
110
|
def ivar(name)
|
111
111
|
var_name = "@_#{name}"
|
112
112
|
if instance_variable_defined?(var_name)
|
@@ -154,7 +154,7 @@ module Mongoid
|
|
154
154
|
#
|
155
155
|
# @param [ String ] name The name of the variable.
|
156
156
|
#
|
157
|
-
# @return [ true
|
157
|
+
# @return [ true | false ] If the variable was defined.
|
158
158
|
def remove_ivar(name)
|
159
159
|
if instance_variable_defined?("@_#{name}")
|
160
160
|
return remove_instance_variable("@_#{name}")
|
@@ -189,10 +189,10 @@ module Mongoid
|
|
189
189
|
# @example You must perform this execution.
|
190
190
|
# object.you_must(:use, "The Force")
|
191
191
|
#
|
192
|
-
# @param [ String
|
192
|
+
# @param [ String | Symbol ] name The method name.
|
193
193
|
# @param [ Array ] args The arguments.
|
194
194
|
#
|
195
|
-
# @return [ Object
|
195
|
+
# @return [ Object | nil ] The result of the method call or nil if the
|
196
196
|
# method does not exist. Nil if the object is frozen.
|
197
197
|
def you_must(name, *args)
|
198
198
|
frozen? ? nil : do_or_do_not(name, *args)
|
@@ -246,3 +246,5 @@ end
|
|
246
246
|
|
247
247
|
::Object.__send__(:include, Mongoid::Extensions::Object)
|
248
248
|
::Object.extend(Mongoid::Extensions::Object::ClassMethods)
|
249
|
+
|
250
|
+
::Mongoid.deprecate(Object, :blank_criteria)
|
@@ -20,7 +20,7 @@ module Mongoid
|
|
20
20
|
# @example Mongoize the object.
|
21
21
|
# range.mongoize
|
22
22
|
#
|
23
|
-
# @return [ Hash ] The object mongoized.
|
23
|
+
# @return [ Hash | nil ] The object mongoized or nil.
|
24
24
|
def mongoize
|
25
25
|
::Range.mongoize(self)
|
26
26
|
end
|
@@ -44,9 +44,23 @@ module Mongoid
|
|
44
44
|
#
|
45
45
|
# @param [ Hash ] object The object to demongoize.
|
46
46
|
#
|
47
|
-
# @return [ Range ] The range.
|
47
|
+
# @return [ Range | nil ] The range, or nil if object cannot be represented as range.
|
48
|
+
#
|
49
|
+
# @note Ruby 2.6 and lower do not support endless ranges that Ruby 2.7+ support.
|
48
50
|
def demongoize(object)
|
49
|
-
object.nil?
|
51
|
+
return if object.nil?
|
52
|
+
if object.is_a?(Hash)
|
53
|
+
hash = object.slice('min', 'max', 'exclude_end', :min, :max, :exclude_end)
|
54
|
+
unless hash.blank?
|
55
|
+
begin
|
56
|
+
::Range.new(hash["min"] || hash[:min],
|
57
|
+
hash["max"] || hash[:max],
|
58
|
+
hash["exclude_end"] || hash[:exclude_end])
|
59
|
+
rescue ArgumentError # can be removed when Ruby version >= 2.7
|
60
|
+
nil
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
50
64
|
end
|
51
65
|
|
52
66
|
# Turn the object from the ruby type we deal with to a Mongo friendly
|
@@ -55,16 +69,33 @@ module Mongoid
|
|
55
69
|
# @example Mongoize the object.
|
56
70
|
# Range.mongoize(1..3)
|
57
71
|
#
|
58
|
-
# @param [
|
72
|
+
# @param [ Object ] object The object to mongoize.
|
59
73
|
#
|
60
|
-
# @return [ Hash ] The object mongoized.
|
74
|
+
# @return [ Hash | nil ] The object mongoized or nil.
|
61
75
|
def mongoize(object)
|
62
|
-
return
|
63
|
-
|
64
|
-
|
65
|
-
|
76
|
+
return if object.nil?
|
77
|
+
case object
|
78
|
+
when Hash then __mongoize_hash__(object)
|
79
|
+
when Range then __mongoize_range__(object)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
private
|
84
|
+
|
85
|
+
def __mongoize_hash__(object)
|
86
|
+
hash = object.stringify_keys
|
87
|
+
hash.slice!('min', 'max', 'exclude_end')
|
88
|
+
hash.compact!
|
89
|
+
hash.transform_values!(&:mongoize)
|
90
|
+
hash.blank? ? nil : hash
|
91
|
+
end
|
92
|
+
|
93
|
+
def __mongoize_range__(object)
|
94
|
+
hash = {}
|
95
|
+
hash['min'] = object.begin.mongoize if object.begin
|
96
|
+
hash['max'] = object.end.mongoize if object.end
|
66
97
|
if object.respond_to?(:exclude_end?) && object.exclude_end?
|
67
|
-
hash
|
98
|
+
hash['exclude_end'] = true
|
68
99
|
end
|
69
100
|
hash
|
70
101
|
end
|
@@ -12,13 +12,20 @@ module Mongoid
|
|
12
12
|
# @example Mongoize the object.
|
13
13
|
# Regexp.mongoize(/\A[abc]/)
|
14
14
|
#
|
15
|
-
# @param [
|
15
|
+
# @param [ Object ] object The object to mongoize.
|
16
16
|
#
|
17
|
-
# @return [ Regexp ] The object mongoized.
|
17
|
+
# @return [ Regexp | nil ] The object mongoized or nil.
|
18
18
|
def mongoize(object)
|
19
|
-
return
|
20
|
-
|
19
|
+
return if object.nil?
|
20
|
+
case object
|
21
|
+
when String then ::Regexp.new(object)
|
22
|
+
when ::Regexp then object
|
23
|
+
when BSON::Regexp::Raw then object.compile
|
24
|
+
end
|
25
|
+
rescue RegexpError
|
26
|
+
nil
|
21
27
|
end
|
28
|
+
alias :demongoize :mongoize
|
22
29
|
end
|
23
30
|
end
|
24
31
|
end
|
@@ -10,7 +10,7 @@ module Mongoid
|
|
10
10
|
# @example Mongoize the object.
|
11
11
|
# set.mongoize
|
12
12
|
#
|
13
|
-
# @return [ Array ] The object mongoized.
|
13
|
+
# @return [ Array | nil ] The object mongoized or nil.
|
14
14
|
def mongoize
|
15
15
|
::Set.mongoize(self)
|
16
16
|
end
|
@@ -26,7 +26,10 @@ module Mongoid
|
|
26
26
|
#
|
27
27
|
# @return [ Set ] The set.
|
28
28
|
def demongoize(object)
|
29
|
-
|
29
|
+
case object
|
30
|
+
when ::Set then object
|
31
|
+
when ::Array then ::Set.new(object)
|
32
|
+
end
|
30
33
|
end
|
31
34
|
|
32
35
|
# Turn the object from the ruby type we deal with to a Mongo friendly
|
@@ -37,9 +40,13 @@ module Mongoid
|
|
37
40
|
#
|
38
41
|
# @param [ Set ] object The object to mongoize.
|
39
42
|
#
|
40
|
-
# @return [ Array ] The object mongoized.
|
43
|
+
# @return [ Array | nil ] The object mongoized or nil.
|
41
44
|
def mongoize(object)
|
42
|
-
object.
|
45
|
+
return if object.nil?
|
46
|
+
case object
|
47
|
+
when ::Set then ::Array.mongoize(object.to_a).uniq
|
48
|
+
when ::Array then ::Array.mongoize(object).uniq
|
49
|
+
end
|
43
50
|
end
|
44
51
|
end
|
45
52
|
end
|
@@ -12,7 +12,7 @@ module Mongoid
|
|
12
12
|
# @example Evolve the string.
|
13
13
|
# "test".__evolve_object_id__
|
14
14
|
#
|
15
|
-
# @return [ String
|
15
|
+
# @return [ String | BSON::ObjectId ] The evolved string.
|
16
16
|
def __evolve_object_id__
|
17
17
|
convert_to_object_id
|
18
18
|
end
|
@@ -22,7 +22,7 @@ module Mongoid
|
|
22
22
|
# @example Evolve the string.
|
23
23
|
# "test".__mongoize_object_id__
|
24
24
|
#
|
25
|
-
# @return [ String
|
25
|
+
# @return [ String | BSON::ObjectId | nil ] The mongoized string.
|
26
26
|
def __mongoize_object_id__
|
27
27
|
convert_to_object_id unless blank?
|
28
28
|
end
|
@@ -65,7 +65,7 @@ module Mongoid
|
|
65
65
|
# @example Is the string an id value?
|
66
66
|
# "_id".mongoid_id?
|
67
67
|
#
|
68
|
-
# @return [ true
|
68
|
+
# @return [ true | false ] If the string is id or _id.
|
69
69
|
def mongoid_id?
|
70
70
|
self =~ /\A(|_)id\z/
|
71
71
|
end
|
@@ -76,7 +76,7 @@ module Mongoid
|
|
76
76
|
# @example Is the string a number.
|
77
77
|
# "1234.23".numeric?
|
78
78
|
#
|
79
|
-
# @return [ true
|
79
|
+
# @return [ true | false ] If the string is a number.
|
80
80
|
def numeric?
|
81
81
|
!!Float(self)
|
82
82
|
rescue ArgumentError
|
@@ -98,7 +98,7 @@ module Mongoid
|
|
98
98
|
# @example Is the string a setter method?
|
99
99
|
# "model=".writer?
|
100
100
|
#
|
101
|
-
# @return [ true
|
101
|
+
# @return [ true | false ] If the string contains "=".
|
102
102
|
def writer?
|
103
103
|
include?("=")
|
104
104
|
end
|
@@ -108,7 +108,7 @@ module Mongoid
|
|
108
108
|
# @example Is the string a valid Ruby identifier for use as a method name
|
109
109
|
# "model=".valid_method_name?
|
110
110
|
#
|
111
|
-
# @return [ true
|
111
|
+
# @return [ true | false ] If the string contains a valid Ruby identifier.
|
112
112
|
def valid_method_name?
|
113
113
|
/[@$"-]/ !~ self
|
114
114
|
end
|
@@ -118,7 +118,7 @@ module Mongoid
|
|
118
118
|
# @example Is the string a setter method?
|
119
119
|
# "price_before_type_cast".before_type_cast?
|
120
120
|
#
|
121
|
-
# @return [ true
|
121
|
+
# @return [ true | false ] If the string ends with "_before_type_cast"
|
122
122
|
def before_type_cast?
|
123
123
|
ends_with?("_before_type_cast")
|
124
124
|
end
|
@@ -128,7 +128,7 @@ module Mongoid
|
|
128
128
|
# @example Is the object unconvertable?
|
129
129
|
# object.unconvertable_to_bson?
|
130
130
|
#
|
131
|
-
# @return [ true
|
131
|
+
# @return [ true | false ] If the object is unconvertable.
|
132
132
|
def unconvertable_to_bson?
|
133
133
|
@unconvertable_to_bson ||= false
|
134
134
|
end
|
@@ -142,25 +142,13 @@ module Mongoid
|
|
142
142
|
# @example Convert to the object id.
|
143
143
|
# string.convert_to_object_id
|
144
144
|
#
|
145
|
-
# @return [ String
|
145
|
+
# @return [ String | BSON::ObjectId ] The string or the id.
|
146
146
|
def convert_to_object_id
|
147
147
|
BSON::ObjectId.legal?(self) ? BSON::ObjectId.from_string(self) : self
|
148
148
|
end
|
149
149
|
|
150
150
|
module ClassMethods
|
151
151
|
|
152
|
-
# Convert the object from its mongo friendly ruby type to this type.
|
153
|
-
#
|
154
|
-
# @example Demongoize the object.
|
155
|
-
# String.demongoize(object)
|
156
|
-
#
|
157
|
-
# @param [ Object ] object The object to demongoize.
|
158
|
-
#
|
159
|
-
# @return [ String ] The object.
|
160
|
-
def demongoize(object)
|
161
|
-
object.try(:to_s)
|
162
|
-
end
|
163
|
-
|
164
152
|
# Turn the object from the ruby type we deal with to a Mongo friendly
|
165
153
|
# type.
|
166
154
|
#
|
@@ -171,8 +159,9 @@ module Mongoid
|
|
171
159
|
#
|
172
160
|
# @return [ String ] The object mongoized.
|
173
161
|
def mongoize(object)
|
174
|
-
|
162
|
+
object.try(:to_s)
|
175
163
|
end
|
164
|
+
alias :demongoize :mongoize
|
176
165
|
end
|
177
166
|
end
|
178
167
|
end
|
@@ -9,25 +9,13 @@ module Mongoid
|
|
9
9
|
# @example Is the string an id value?
|
10
10
|
# :_id.mongoid_id?
|
11
11
|
#
|
12
|
-
# @return [ true
|
12
|
+
# @return [ true | false ] If the symbol is :id or :_id.
|
13
13
|
def mongoid_id?
|
14
14
|
to_s.mongoid_id?
|
15
15
|
end
|
16
16
|
|
17
17
|
module ClassMethods
|
18
18
|
|
19
|
-
# Convert the object from its mongo friendly ruby type to this type.
|
20
|
-
#
|
21
|
-
# @example Demongoize the object.
|
22
|
-
# Symbol.demongoize(object)
|
23
|
-
#
|
24
|
-
# @param [ Object ] object The object to demongoize.
|
25
|
-
#
|
26
|
-
# @return [ Symbol ] The object.
|
27
|
-
def demongoize(object)
|
28
|
-
object.try(:to_sym)
|
29
|
-
end
|
30
|
-
|
31
19
|
# Turn the object from the ruby type we deal with to a Mongo friendly
|
32
20
|
# type.
|
33
21
|
#
|
@@ -36,10 +24,11 @@ module Mongoid
|
|
36
24
|
#
|
37
25
|
# @param [ Object ] object The object to mongoize.
|
38
26
|
#
|
39
|
-
# @return [ Symbol ] The object mongoized.
|
27
|
+
# @return [ Symbol | nil ] The object mongoized or nil.
|
40
28
|
def mongoize(object)
|
41
|
-
|
29
|
+
object.try(:to_sym)
|
42
30
|
end
|
31
|
+
alias :demongoize :mongoize
|
43
32
|
end
|
44
33
|
end
|
45
34
|
end
|