mongoid 2.4.10 → 3.0.0
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.
- data/CHANGELOG.md +949 -10
- data/LICENSE +1 -1
- data/README.md +10 -11
- data/Rakefile +3 -17
- data/lib/config/locales/en.yml +455 -51
- data/lib/mongoid/atomic/modifiers.rb +2 -2
- data/lib/mongoid/atomic/paths/embedded/many.rb +6 -6
- data/lib/mongoid/atomic/paths/embedded/one.rb +5 -5
- data/lib/mongoid/atomic/paths/embedded.rb +4 -5
- data/lib/mongoid/atomic/paths/root.rb +4 -5
- data/lib/mongoid/atomic.rb +70 -16
- data/lib/mongoid/attributes/processing.rb +14 -10
- data/lib/mongoid/attributes/readonly.rb +56 -0
- data/lib/mongoid/attributes.rb +95 -32
- data/lib/mongoid/callbacks.rb +106 -43
- data/lib/mongoid/components.rb +12 -23
- data/lib/mongoid/config/environment.rb +7 -4
- data/lib/mongoid/config/inflections.rb +6 -0
- data/lib/mongoid/config/options.rb +1 -1
- data/lib/mongoid/config/validators/option.rb +25 -0
- data/lib/mongoid/config/validators/session.rb +140 -0
- data/lib/mongoid/config/validators.rb +3 -0
- data/lib/mongoid/config.rb +104 -225
- data/lib/mongoid/contextual/aggregable/memory.rb +109 -0
- data/lib/mongoid/contextual/aggregable/mongo.rb +181 -0
- data/lib/mongoid/contextual/atomic.rb +179 -0
- data/lib/mongoid/contextual/command.rb +43 -0
- data/lib/mongoid/contextual/find_and_modify.rb +68 -0
- data/lib/mongoid/contextual/map_reduce.rb +273 -0
- data/lib/mongoid/contextual/memory.rb +406 -0
- data/lib/mongoid/contextual/mongo.rb +662 -0
- data/lib/mongoid/contextual.rb +50 -0
- data/lib/mongoid/copyable.rb +7 -25
- data/lib/mongoid/criteria.rb +515 -245
- data/lib/mongoid/criterion/inspection.rb +14 -8
- data/lib/mongoid/criterion/scoping.rb +114 -44
- data/lib/mongoid/dirty.rb +152 -67
- data/lib/mongoid/document.rb +71 -52
- data/lib/mongoid/errors/ambiguous_relationship.rb +51 -0
- data/lib/mongoid/errors/callback.rb +5 -6
- data/lib/mongoid/errors/delete_restriction.rb +29 -0
- data/lib/mongoid/errors/document_not_found.rb +98 -17
- data/lib/mongoid/errors/eager_load.rb +3 -6
- data/lib/mongoid/errors/invalid_collection.rb +3 -3
- data/lib/mongoid/errors/invalid_config_option.rb +27 -0
- data/lib/mongoid/errors/invalid_database.rb +3 -3
- data/lib/mongoid/errors/invalid_field.rb +54 -8
- data/lib/mongoid/errors/invalid_field_option.rb +35 -0
- data/lib/mongoid/errors/invalid_find.rb +3 -3
- data/lib/mongoid/errors/invalid_index.rb +28 -0
- data/lib/mongoid/errors/invalid_options.rb +4 -4
- data/lib/mongoid/errors/invalid_scope.rb +24 -0
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +38 -0
- data/lib/mongoid/errors/invalid_storage_options.rb +27 -0
- data/lib/mongoid/errors/invalid_time.rb +3 -6
- data/lib/mongoid/errors/inverse_not_found.rb +29 -0
- data/lib/mongoid/errors/mixed_relations.rb +4 -9
- data/lib/mongoid/errors/mixed_session_configuration.rb +28 -0
- data/lib/mongoid/errors/mongoid_error.rb +54 -3
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +28 -0
- data/lib/mongoid/errors/no_default_session.rb +23 -0
- data/lib/mongoid/errors/no_environment.rb +3 -3
- data/lib/mongoid/errors/no_map_reduce_output.rb +24 -0
- data/lib/mongoid/errors/no_metadata.rb +21 -0
- data/lib/mongoid/errors/no_parent.rb +24 -0
- data/lib/mongoid/errors/no_session_config.rb +22 -0
- data/lib/mongoid/errors/no_session_database.rb +27 -0
- data/lib/mongoid/errors/no_session_hosts.rb +27 -0
- data/lib/mongoid/errors/no_sessions_config.rb +20 -0
- data/lib/mongoid/errors/readonly_attribute.rb +25 -0
- data/lib/mongoid/errors/scope_overwrite.rb +4 -4
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +4 -4
- data/lib/mongoid/errors/unknown_attribute.rb +25 -0
- data/lib/mongoid/errors/unsaved_document.rb +4 -8
- data/lib/mongoid/errors/unsupported_javascript.rb +27 -0
- data/lib/mongoid/errors/unsupported_version.rb +4 -4
- data/lib/mongoid/errors/validations.rb +7 -6
- data/lib/mongoid/errors/versioning_not_on_root.rb +23 -0
- data/lib/mongoid/errors.rb +23 -1
- data/lib/mongoid/evolvable.rb +19 -0
- data/lib/mongoid/extensions/array.rb +164 -0
- data/lib/mongoid/extensions/big_decimal.rb +42 -0
- data/lib/mongoid/extensions/boolean.rb +24 -0
- data/lib/mongoid/extensions/date.rb +70 -0
- data/lib/mongoid/extensions/date_time.rb +73 -0
- data/lib/mongoid/extensions/false_class.rb +38 -0
- data/lib/mongoid/extensions/float.rb +56 -0
- data/lib/mongoid/extensions/hash.rb +123 -0
- data/lib/mongoid/extensions/integer.rb +66 -0
- data/lib/mongoid/extensions/module.rb +28 -0
- data/lib/mongoid/extensions/nil_class.rb +21 -0
- data/lib/mongoid/extensions/object.rb +238 -0
- data/lib/mongoid/extensions/object_id.rb +54 -0
- data/lib/mongoid/extensions/range.rb +79 -0
- data/lib/mongoid/extensions/regexp.rb +27 -0
- data/lib/mongoid/extensions/set.rb +55 -0
- data/lib/mongoid/extensions/string.rb +181 -0
- data/lib/mongoid/extensions/symbol.rb +54 -0
- data/lib/mongoid/extensions/time.rb +78 -0
- data/lib/mongoid/extensions/time_with_zone.rb +55 -0
- data/lib/mongoid/extensions/true_class.rb +38 -0
- data/lib/mongoid/extensions.rb +28 -76
- data/lib/mongoid/factory.rb +1 -1
- data/lib/mongoid/fields/foreign_key.rb +150 -0
- data/lib/mongoid/fields/localized.rb +73 -0
- data/lib/mongoid/fields/standard.rb +268 -0
- data/lib/mongoid/fields/validators/macro.rb +83 -0
- data/lib/mongoid/fields/validators.rb +2 -0
- data/lib/mongoid/fields.rb +142 -208
- data/lib/mongoid/finders.rb +45 -50
- data/lib/mongoid/hierarchy.rb +44 -15
- data/lib/mongoid/identity_map.rb +49 -21
- data/lib/mongoid/indexes/validators/options.rb +80 -0
- data/lib/mongoid/indexes.rb +66 -15
- data/lib/mongoid/inspection.rb +1 -1
- data/lib/mongoid/json.rb +2 -2
- data/lib/mongoid/loggable.rb +69 -0
- data/lib/mongoid/matchers/all.rb +7 -8
- data/lib/mongoid/matchers/and.rb +3 -3
- data/lib/mongoid/matchers/default.rb +6 -4
- data/lib/mongoid/matchers/exists.rb +2 -2
- data/lib/mongoid/matchers/gt.rb +2 -2
- data/lib/mongoid/matchers/gte.rb +2 -2
- data/lib/mongoid/matchers/in.rb +3 -7
- data/lib/mongoid/matchers/lt.rb +2 -2
- data/lib/mongoid/matchers/lte.rb +2 -2
- data/lib/mongoid/matchers/ne.rb +2 -2
- data/lib/mongoid/matchers/nin.rb +2 -2
- data/lib/mongoid/matchers/or.rb +2 -2
- data/lib/mongoid/matchers/size.rb +2 -2
- data/lib/mongoid/matchers/strategies.rb +3 -3
- data/lib/mongoid/matchers.rb +1 -1
- data/lib/mongoid/multi_parameter_attributes.rb +9 -11
- data/lib/mongoid/nested_attributes.rb +17 -9
- data/lib/mongoid/observer.rb +1 -2
- data/lib/mongoid/paranoia.rb +10 -44
- data/lib/mongoid/persistence/atomic/add_to_set.rb +5 -9
- data/lib/mongoid/persistence/atomic/bit.rb +5 -7
- data/lib/mongoid/persistence/atomic/inc.rb +5 -7
- data/lib/mongoid/persistence/atomic/operation.rb +45 -6
- data/lib/mongoid/persistence/atomic/pop.rb +5 -7
- data/lib/mongoid/persistence/atomic/pull.rb +5 -7
- data/lib/mongoid/persistence/atomic/pull_all.rb +5 -7
- data/lib/mongoid/persistence/atomic/push.rb +4 -10
- data/lib/mongoid/persistence/atomic/push_all.rb +4 -10
- data/lib/mongoid/persistence/atomic/rename.rb +6 -7
- data/lib/mongoid/persistence/atomic/sets.rb +5 -7
- data/lib/mongoid/persistence/atomic/unset.rb +4 -5
- data/lib/mongoid/persistence/atomic.rb +2 -2
- data/lib/mongoid/persistence/deletion.rb +2 -2
- data/lib/mongoid/persistence/insertion.rb +10 -16
- data/lib/mongoid/persistence/modification.rb +5 -9
- data/lib/mongoid/persistence/operations/embedded/insert.rb +7 -6
- data/lib/mongoid/persistence/operations/embedded/remove.rb +5 -5
- data/lib/mongoid/persistence/operations/insert.rb +4 -4
- data/lib/mongoid/persistence/operations/remove.rb +4 -4
- data/lib/mongoid/persistence/operations/update.rb +5 -5
- data/lib/mongoid/persistence/operations/upsert.rb +28 -0
- data/lib/mongoid/persistence/operations.rb +22 -19
- data/lib/mongoid/persistence/upsertion.rb +30 -0
- data/lib/mongoid/persistence.rb +94 -39
- data/lib/mongoid/railtie.rb +26 -11
- data/lib/mongoid/railties/database.rake +22 -108
- data/lib/mongoid/relations/accessors.rb +120 -20
- data/lib/mongoid/relations/auto_save.rb +59 -5
- data/lib/mongoid/relations/binding.rb +211 -2
- data/lib/mongoid/relations/bindings/embedded/in.rb +16 -22
- data/lib/mongoid/relations/bindings/embedded/many.rb +9 -50
- data/lib/mongoid/relations/bindings/embedded/one.rb +10 -16
- data/lib/mongoid/relations/bindings/referenced/in.rb +31 -57
- data/lib/mongoid/relations/bindings/referenced/many.rb +8 -20
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +15 -19
- data/lib/mongoid/relations/bindings/referenced/one.rb +10 -24
- data/lib/mongoid/relations/builder.rb +4 -4
- data/lib/mongoid/relations/builders/embedded/in.rb +5 -5
- data/lib/mongoid/relations/builders/embedded/many.rb +12 -12
- data/lib/mongoid/relations/builders/embedded/one.rb +6 -6
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +8 -8
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +5 -5
- data/lib/mongoid/relations/builders/referenced/in.rb +4 -4
- data/lib/mongoid/relations/builders/referenced/many.rb +6 -6
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +7 -5
- data/lib/mongoid/relations/builders/referenced/one.rb +5 -5
- data/lib/mongoid/relations/builders.rb +19 -16
- data/lib/mongoid/relations/cascading/delete.rb +3 -5
- data/lib/mongoid/relations/cascading/destroy.rb +3 -3
- data/lib/mongoid/relations/cascading/nullify.rb +3 -3
- data/lib/mongoid/relations/cascading/restrict.rb +37 -0
- data/lib/mongoid/relations/cascading.rb +10 -7
- data/lib/mongoid/relations/constraint.rb +4 -3
- data/lib/mongoid/relations/conversions.rb +6 -7
- data/lib/mongoid/relations/cyclic.rb +7 -7
- data/lib/mongoid/relations/embedded/batchable.rb +347 -0
- data/lib/mongoid/relations/embedded/in.rb +23 -12
- data/lib/mongoid/relations/embedded/many.rb +100 -161
- data/lib/mongoid/relations/embedded/one.rb +25 -14
- data/lib/mongoid/relations/macros.rb +105 -60
- data/lib/mongoid/relations/many.rb +93 -14
- data/lib/mongoid/relations/metadata.rb +277 -47
- data/lib/mongoid/relations/nested_builder.rb +4 -6
- data/lib/mongoid/relations/one.rb +2 -2
- data/lib/mongoid/relations/options.rb +2 -2
- data/lib/mongoid/relations/polymorphic.rb +9 -9
- data/lib/mongoid/relations/proxy.rb +62 -31
- data/lib/mongoid/relations/referenced/in.rb +40 -15
- data/lib/mongoid/relations/referenced/many.rb +162 -130
- data/lib/mongoid/relations/referenced/many_to_many.rb +104 -48
- data/lib/mongoid/relations/referenced/one.rb +34 -13
- data/lib/mongoid/relations/reflections.rb +3 -3
- data/lib/mongoid/relations/synchronization.rb +19 -23
- data/lib/mongoid/relations/targets/enumerable.rb +86 -57
- data/lib/mongoid/relations/touchable.rb +32 -0
- data/lib/mongoid/relations.rb +22 -6
- data/lib/mongoid/reloading.rb +12 -14
- data/lib/mongoid/scoping.rb +312 -0
- data/lib/mongoid/serialization.rb +94 -42
- data/lib/mongoid/sessions/factory.rb +108 -0
- data/lib/mongoid/sessions/mongo_uri.rb +93 -0
- data/lib/mongoid/sessions/validators/storage.rb +49 -0
- data/lib/mongoid/sessions/validators.rb +2 -0
- data/lib/mongoid/sessions.rb +383 -0
- data/lib/mongoid/sharding.rb +6 -6
- data/lib/mongoid/state.rb +6 -7
- data/lib/mongoid/threaded/lifecycle.rb +21 -21
- data/lib/mongoid/threaded/sessions.rb +0 -0
- data/lib/mongoid/threaded.rb +219 -59
- data/lib/mongoid/timestamps/created.rb +8 -4
- data/lib/mongoid/timestamps/timeless.rb +6 -4
- data/lib/mongoid/timestamps/updated.rb +4 -3
- data/lib/mongoid/timestamps.rb +1 -1
- data/lib/mongoid/unit_of_work.rb +61 -0
- data/lib/mongoid/validations/associated.rb +2 -2
- data/lib/mongoid/validations/format.rb +2 -2
- data/lib/mongoid/validations/presence.rb +34 -4
- data/lib/mongoid/validations/uniqueness.rb +11 -12
- data/lib/mongoid/validations.rb +28 -20
- data/lib/mongoid/version.rb +2 -2
- data/lib/mongoid/versioning.rb +25 -26
- data/lib/mongoid.rb +37 -37
- data/lib/rack/mongoid/middleware/identity_map.rb +3 -3
- data/lib/rails/generators/mongoid/config/config_generator.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +65 -17
- data/lib/rails/generators/mongoid/model/model_generator.rb +7 -7
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +2 -2
- data/lib/rails/generators/mongoid/observer/observer_generator.rb +4 -4
- data/lib/rails/generators/mongoid_generator.rb +5 -5
- data/lib/rails/mongoid.rb +73 -26
- metadata +103 -148
- data/lib/config/locales/bg.yml +0 -61
- data/lib/config/locales/de.yml +0 -61
- data/lib/config/locales/en-GB.yml +0 -64
- data/lib/config/locales/es.yml +0 -59
- data/lib/config/locales/fr.yml +0 -62
- data/lib/config/locales/hi.yml +0 -53
- data/lib/config/locales/hu.yml +0 -64
- data/lib/config/locales/id.yml +0 -62
- data/lib/config/locales/it.yml +0 -59
- data/lib/config/locales/ja.yml +0 -57
- data/lib/config/locales/kr.yml +0 -54
- data/lib/config/locales/nl.yml +0 -61
- data/lib/config/locales/pl.yml +0 -59
- data/lib/config/locales/pt-BR.yml +0 -60
- data/lib/config/locales/pt.yml +0 -60
- data/lib/config/locales/ro.yml +0 -66
- data/lib/config/locales/ru.yml +0 -61
- data/lib/config/locales/sv.yml +0 -60
- data/lib/config/locales/vi.yml +0 -62
- data/lib/config/locales/zh-CN.yml +0 -53
- data/lib/mongoid/collection.rb +0 -157
- data/lib/mongoid/collections/master.rb +0 -45
- data/lib/mongoid/collections/operations.rb +0 -44
- data/lib/mongoid/collections/retry.rb +0 -59
- data/lib/mongoid/collections.rb +0 -120
- data/lib/mongoid/config/database.rb +0 -181
- data/lib/mongoid/config/replset_database.rb +0 -80
- data/lib/mongoid/contexts/enumerable/sort.rb +0 -43
- data/lib/mongoid/contexts/enumerable.rb +0 -313
- data/lib/mongoid/contexts/mongo.rb +0 -487
- data/lib/mongoid/contexts.rb +0 -25
- data/lib/mongoid/criterion/builder.rb +0 -34
- data/lib/mongoid/criterion/complex.rb +0 -84
- data/lib/mongoid/criterion/creational.rb +0 -34
- data/lib/mongoid/criterion/exclusion.rb +0 -108
- data/lib/mongoid/criterion/inclusion.rb +0 -290
- data/lib/mongoid/criterion/optional.rb +0 -259
- data/lib/mongoid/criterion/selector.rb +0 -177
- data/lib/mongoid/cursor.rb +0 -88
- data/lib/mongoid/default_scope.rb +0 -36
- data/lib/mongoid/errors/invalid_type.rb +0 -25
- data/lib/mongoid/extensions/array/deep_copy.rb +0 -25
- data/lib/mongoid/extensions/array/deletion.rb +0 -29
- data/lib/mongoid/extensions/false_class/equality.rb +0 -26
- data/lib/mongoid/extensions/hash/criteria_helpers.rb +0 -47
- data/lib/mongoid/extensions/hash/deep_copy.rb +0 -25
- data/lib/mongoid/extensions/hash/scoping.rb +0 -25
- data/lib/mongoid/extensions/integer/checks.rb +0 -23
- data/lib/mongoid/extensions/nil/collectionization.rb +0 -23
- data/lib/mongoid/extensions/object/checks.rb +0 -29
- data/lib/mongoid/extensions/object/deep_copy.rb +0 -21
- data/lib/mongoid/extensions/object/reflections.rb +0 -48
- data/lib/mongoid/extensions/object/substitutable.rb +0 -15
- data/lib/mongoid/extensions/object/yoda.rb +0 -44
- data/lib/mongoid/extensions/object_id/conversions.rb +0 -60
- data/lib/mongoid/extensions/proc/scoping.rb +0 -25
- data/lib/mongoid/extensions/string/checks.rb +0 -36
- data/lib/mongoid/extensions/string/conversions.rb +0 -22
- data/lib/mongoid/extensions/string/inflections.rb +0 -118
- data/lib/mongoid/extensions/symbol/checks.rb +0 -23
- data/lib/mongoid/extensions/symbol/inflections.rb +0 -67
- data/lib/mongoid/extensions/true_class/equality.rb +0 -26
- data/lib/mongoid/extras.rb +0 -31
- data/lib/mongoid/fields/internal/array.rb +0 -76
- data/lib/mongoid/fields/internal/big_decimal.rb +0 -63
- data/lib/mongoid/fields/internal/bignum.rb +0 -10
- data/lib/mongoid/fields/internal/binary.rb +0 -11
- data/lib/mongoid/fields/internal/boolean.rb +0 -58
- data/lib/mongoid/fields/internal/date.rb +0 -51
- data/lib/mongoid/fields/internal/date_time.rb +0 -28
- data/lib/mongoid/fields/internal/false_class.rb +0 -10
- data/lib/mongoid/fields/internal/fixnum.rb +0 -10
- data/lib/mongoid/fields/internal/float.rb +0 -47
- data/lib/mongoid/fields/internal/foreign_keys/array.rb +0 -88
- data/lib/mongoid/fields/internal/foreign_keys/object.rb +0 -56
- data/lib/mongoid/fields/internal/hash.rb +0 -11
- data/lib/mongoid/fields/internal/integer.rb +0 -59
- data/lib/mongoid/fields/internal/localized.rb +0 -62
- data/lib/mongoid/fields/internal/nil_class.rb +0 -53
- data/lib/mongoid/fields/internal/object.rb +0 -11
- data/lib/mongoid/fields/internal/object_id.rb +0 -46
- data/lib/mongoid/fields/internal/range.rb +0 -61
- data/lib/mongoid/fields/internal/set.rb +0 -57
- data/lib/mongoid/fields/internal/string.rb +0 -42
- data/lib/mongoid/fields/internal/symbol.rb +0 -43
- data/lib/mongoid/fields/internal/time.rb +0 -23
- data/lib/mongoid/fields/internal/time_with_zone.rb +0 -23
- data/lib/mongoid/fields/internal/timekeeping.rb +0 -122
- data/lib/mongoid/fields/internal/true_class.rb +0 -10
- data/lib/mongoid/fields/mappings.rb +0 -42
- data/lib/mongoid/fields/serializable.rb +0 -270
- data/lib/mongoid/identity.rb +0 -92
- data/lib/mongoid/javascript/functions.yml +0 -63
- data/lib/mongoid/javascript.rb +0 -20
- data/lib/mongoid/keys.rb +0 -144
- data/lib/mongoid/logger.rb +0 -45
- data/lib/mongoid/multi_database.rb +0 -36
- data/lib/mongoid/named_scope.rb +0 -166
- data/lib/mongoid/relations/embedded/atomic/operation.rb +0 -63
- data/lib/mongoid/relations/embedded/atomic/pull.rb +0 -65
- data/lib/mongoid/relations/embedded/atomic/push_all.rb +0 -59
- data/lib/mongoid/relations/embedded/atomic/set.rb +0 -61
- data/lib/mongoid/relations/embedded/atomic/unset.rb +0 -41
- data/lib/mongoid/relations/embedded/atomic.rb +0 -89
- data/lib/mongoid/relations/referenced/batch/insert.rb +0 -57
- data/lib/mongoid/relations/referenced/batch.rb +0 -73
- data/lib/mongoid/safety.rb +0 -105
- data/lib/mongoid/scope.rb +0 -31
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid #:nodoc:
|
|
3
|
-
module Criterion #:nodoc:
|
|
4
|
-
|
|
5
|
-
# The selector is a hash-like object that has special behaviour for merging
|
|
6
|
-
# mongoid criteria selectors.
|
|
7
|
-
class Selector < Hash
|
|
8
|
-
|
|
9
|
-
attr_reader :aliased_fields, :fields, :klass
|
|
10
|
-
|
|
11
|
-
# Create the new selector.
|
|
12
|
-
#
|
|
13
|
-
# @example Create the selector.
|
|
14
|
-
# Selector.new(Person)
|
|
15
|
-
#
|
|
16
|
-
# @param [ Class ] klass The class the selector is for.
|
|
17
|
-
#
|
|
18
|
-
# @since 1.0.0
|
|
19
|
-
def initialize(klass)
|
|
20
|
-
@aliased_fields, @fields, @klass =
|
|
21
|
-
klass.aliased_fields, klass.fields.except("_id", "_type"), klass
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
# Set the value for the supplied key, attempting to typecast the value.
|
|
25
|
-
#
|
|
26
|
-
# @example Set the value for the key.
|
|
27
|
-
# selector["$ne"] = { :name => "Zorg" }
|
|
28
|
-
#
|
|
29
|
-
# @param [ String, Symbol ] key The hash key.
|
|
30
|
-
# @param [ Object ] value The value to set.
|
|
31
|
-
#
|
|
32
|
-
# @since 2.0.0
|
|
33
|
-
def []=(key, value)
|
|
34
|
-
key = "#{key}.#{::I18n.locale}" if klass.fields[key.to_s].try(:localized?)
|
|
35
|
-
super(key, try_to_typecast(key, value))
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
# Merge the selector with another hash.
|
|
39
|
-
#
|
|
40
|
-
# @example Merge the objects.
|
|
41
|
-
# selector.merge!({ :key => "value" })
|
|
42
|
-
#
|
|
43
|
-
# @param [ Hash, Selector ] other The object to merge with.
|
|
44
|
-
#
|
|
45
|
-
# @return [ Selector ] The merged selector.
|
|
46
|
-
#
|
|
47
|
-
# @since 1.0.0
|
|
48
|
-
def merge!(other)
|
|
49
|
-
tap do |selector|
|
|
50
|
-
other.each_pair do |key, value|
|
|
51
|
-
selector[key] = value
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
alias :update :merge!
|
|
56
|
-
|
|
57
|
-
if RUBY_VERSION < '1.9'
|
|
58
|
-
|
|
59
|
-
# Generate pretty inspection for old ruby versions.
|
|
60
|
-
#
|
|
61
|
-
# @example Inspect the selector.
|
|
62
|
-
# selector.inspect
|
|
63
|
-
#
|
|
64
|
-
# @return [ String ] The inspected selector.
|
|
65
|
-
def inspect
|
|
66
|
-
ret = self.keys.inject([]) do |ret, key|
|
|
67
|
-
ret << "#{key.inspect}=>#{self[key].inspect}"
|
|
68
|
-
end
|
|
69
|
-
"{#{ret.sort.join(', ')}}"
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
private
|
|
74
|
-
|
|
75
|
-
# If the key is defined as a field, then attempt to typecast it.
|
|
76
|
-
#
|
|
77
|
-
# @example Try to cast.
|
|
78
|
-
# selector.try_to_typecast(:id, 1)
|
|
79
|
-
#
|
|
80
|
-
# @param [ String, Symbol ] key The field name.
|
|
81
|
-
# @param [ Object ] value The value.
|
|
82
|
-
#
|
|
83
|
-
# @return [ Object ] The typecasted value.
|
|
84
|
-
#
|
|
85
|
-
# @since 1.0.0
|
|
86
|
-
def try_to_typecast(key, value)
|
|
87
|
-
access = key.to_s
|
|
88
|
-
if field = fields[key.to_s] || fields[aliased_fields[key.to_s]]
|
|
89
|
-
typecast_value_for(field, value)
|
|
90
|
-
elsif proper_and_or_value?(key, value)
|
|
91
|
-
handle_and_or_value(value)
|
|
92
|
-
else
|
|
93
|
-
value
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
def proper_and_or_value?(key, value)
|
|
98
|
-
["$and", "$or"].include?(key) &&
|
|
99
|
-
value.is_a?(Array) &&
|
|
100
|
-
value.all?{ |e| e.is_a?(Hash) }
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
def handle_and_or_value(values)
|
|
104
|
-
[].tap do |result|
|
|
105
|
-
result.push(*values.map do |value|
|
|
106
|
-
Hash[value.map do |_key, _value|
|
|
107
|
-
if klass.fields[_key.to_s].try(:localized?)
|
|
108
|
-
_key = "#{_key}.#{::I18n.locale}"
|
|
109
|
-
end
|
|
110
|
-
[_key, try_to_typecast(_key, _value)]
|
|
111
|
-
end]
|
|
112
|
-
end)
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
# Get the typecast value for the defined field.
|
|
117
|
-
#
|
|
118
|
-
# @example Get the typecast value.
|
|
119
|
-
# selector.typecast_value_for(:name, "Corbin")
|
|
120
|
-
#
|
|
121
|
-
# @param [ Field ] field The defined field.
|
|
122
|
-
# @param [ Object ] value The value to cast.
|
|
123
|
-
#
|
|
124
|
-
# @return [ Object ] The cast value.
|
|
125
|
-
#
|
|
126
|
-
# @since 1.0.0
|
|
127
|
-
def typecast_value_for(field, value)
|
|
128
|
-
return field.selection(value) if field.type === value
|
|
129
|
-
case value
|
|
130
|
-
when Hash
|
|
131
|
-
value = value.dup
|
|
132
|
-
value.each_pair do |k, v|
|
|
133
|
-
value[k] = typecast_hash_value(field, k, v)
|
|
134
|
-
end
|
|
135
|
-
when Array
|
|
136
|
-
value.map { |v| typecast_value_for(field, v) }
|
|
137
|
-
when Regexp
|
|
138
|
-
value
|
|
139
|
-
when Range
|
|
140
|
-
{
|
|
141
|
-
"$gte" => typecast_value_for(field, value.first),
|
|
142
|
-
"$lte" => typecast_value_for(field, value.last)
|
|
143
|
-
}
|
|
144
|
-
else
|
|
145
|
-
if field.type == Array
|
|
146
|
-
Serialization.mongoize(value, value.class)
|
|
147
|
-
else
|
|
148
|
-
field.selection(value)
|
|
149
|
-
end
|
|
150
|
-
end
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
# Typecast the value for booleans and integers in hashes.
|
|
154
|
-
#
|
|
155
|
-
# @example Typecast the hash values.
|
|
156
|
-
# selector.typecast_hash_value(field, "$exists", "true")
|
|
157
|
-
#
|
|
158
|
-
# @param [ Field ] field The defined field.
|
|
159
|
-
# @param [ String ] key The modifier key.
|
|
160
|
-
# @param [ Object ] value The value to cast.
|
|
161
|
-
#
|
|
162
|
-
# @return [ Object ] The cast value.
|
|
163
|
-
#
|
|
164
|
-
# @since 1.0.0
|
|
165
|
-
def typecast_hash_value(field, key, value)
|
|
166
|
-
case key
|
|
167
|
-
when "$exists"
|
|
168
|
-
Serialization.mongoize(value, Boolean)
|
|
169
|
-
when "$size"
|
|
170
|
-
Serialization.mongoize(value, Integer)
|
|
171
|
-
else
|
|
172
|
-
typecast_value_for(field, value)
|
|
173
|
-
end
|
|
174
|
-
end
|
|
175
|
-
end
|
|
176
|
-
end
|
|
177
|
-
end
|
data/lib/mongoid/cursor.rb
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid #:nodoc
|
|
3
|
-
|
|
4
|
-
# Mongoid wrapper of the Ruby Driver cursor.
|
|
5
|
-
class Cursor
|
|
6
|
-
include Mongoid::Collections::Retry
|
|
7
|
-
include Enumerable
|
|
8
|
-
|
|
9
|
-
# Operations on the Mongo::Cursor object that will not get overriden by the
|
|
10
|
-
# Mongoid::Cursor are defined here.
|
|
11
|
-
OPERATIONS = [
|
|
12
|
-
:close,
|
|
13
|
-
:closed?,
|
|
14
|
-
:count,
|
|
15
|
-
:explain,
|
|
16
|
-
:fields,
|
|
17
|
-
:full_collection_name,
|
|
18
|
-
:hint,
|
|
19
|
-
:limit,
|
|
20
|
-
:order,
|
|
21
|
-
:query_options_hash,
|
|
22
|
-
:query_opts,
|
|
23
|
-
:selector,
|
|
24
|
-
:skip,
|
|
25
|
-
:snapshot,
|
|
26
|
-
:sort,
|
|
27
|
-
:timeout
|
|
28
|
-
]
|
|
29
|
-
|
|
30
|
-
attr_reader :collection, :cursor, :klass
|
|
31
|
-
|
|
32
|
-
# The operations above will all delegate to the proxied Mongo::Cursor.
|
|
33
|
-
OPERATIONS.each do |name|
|
|
34
|
-
class_eval <<-EOS, __FILE__, __LINE__
|
|
35
|
-
def #{name}(*args)
|
|
36
|
-
retry_on_connection_failure do
|
|
37
|
-
cursor.#{name}(*args)
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
EOS
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# Iterate over each document in the cursor and yield to it.
|
|
44
|
-
#
|
|
45
|
-
# @example Iterate over the cursor.
|
|
46
|
-
# cursor.each { |doc| p doc.title }
|
|
47
|
-
def each
|
|
48
|
-
retry_on_connection_failure do
|
|
49
|
-
while document = cursor.next_document
|
|
50
|
-
yield Factory.from_db(klass, document)
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
# Create the new +Mongoid::Cursor+.
|
|
56
|
-
#
|
|
57
|
-
# @example Instantiate the cursor.
|
|
58
|
-
# Mongoid::Cursor.new(Person, cursor)
|
|
59
|
-
#
|
|
60
|
-
# @param [ Class ] klass The class associated with the cursor.
|
|
61
|
-
# @param [ Collection ] collection The Mongoid::Collection instance.
|
|
62
|
-
# @param [ Mongo::Cursor ] cursor The Mongo::Cursor to be proxied.
|
|
63
|
-
def initialize(klass, collection, cursor)
|
|
64
|
-
@klass, @collection, @cursor = klass, collection, cursor
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
# Return the next document in the cursor. Will instantiate a new Mongoid
|
|
68
|
-
# document with the attributes.
|
|
69
|
-
#
|
|
70
|
-
# @example Get the next document.
|
|
71
|
-
# cursor.next_document
|
|
72
|
-
#
|
|
73
|
-
# @return [ Document ] The next document in the cursor.
|
|
74
|
-
def next_document
|
|
75
|
-
Mongoid::Factory.from_db(klass, cursor.next_document)
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
# Returns an array of all the documents in the cursor.
|
|
79
|
-
#
|
|
80
|
-
# @example Get the cursor as an array.
|
|
81
|
-
# cursor.to_a
|
|
82
|
-
#
|
|
83
|
-
# @return [ Array<Document> ] An array of documents.
|
|
84
|
-
def to_a
|
|
85
|
-
cursor.to_a.collect { |attrs| Mongoid::Factory.from_db(klass, attrs) }
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
end
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid #:nodoc:
|
|
3
|
-
|
|
4
|
-
# This module handles functionality for creating default scopes.
|
|
5
|
-
module DefaultScope
|
|
6
|
-
extend ActiveSupport::Concern
|
|
7
|
-
|
|
8
|
-
included do
|
|
9
|
-
class_attribute :default_scoping
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
module ClassMethods #:nodoc:
|
|
13
|
-
|
|
14
|
-
# Creates a default_scope for the +Document+, similar to ActiveRecord's
|
|
15
|
-
# default_scope. +DefaultScopes+ are proxied +Criteria+ objects that are
|
|
16
|
-
# applied by default to all queries for the class.
|
|
17
|
-
#
|
|
18
|
-
# @example Create a default scope.
|
|
19
|
-
#
|
|
20
|
-
# class Person
|
|
21
|
-
# include Mongoid::Document
|
|
22
|
-
# field :active, :type => Boolean
|
|
23
|
-
# field :count, :type => Integer
|
|
24
|
-
#
|
|
25
|
-
# default_scope :where => { :active => true }
|
|
26
|
-
# end
|
|
27
|
-
#
|
|
28
|
-
# @param [ Hash ] conditions The conditions to create with.
|
|
29
|
-
#
|
|
30
|
-
# @since 2.0.0.rc.1
|
|
31
|
-
def default_scope(conditions = {})
|
|
32
|
-
self.default_scoping = Scope.new(conditions).conditions.as_conditions
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid #:nodoc
|
|
3
|
-
module Errors #:nodoc
|
|
4
|
-
|
|
5
|
-
# Raised when trying to get or set a value for a defined field, where the
|
|
6
|
-
# type of the object does not match the defined field type.
|
|
7
|
-
#
|
|
8
|
-
# @example Create the error.
|
|
9
|
-
# InvalidType.new(Array, "Not an Array")
|
|
10
|
-
class InvalidType < MongoidError
|
|
11
|
-
def initialize(klass, value)
|
|
12
|
-
super(
|
|
13
|
-
translate(
|
|
14
|
-
"invalid_type",
|
|
15
|
-
{
|
|
16
|
-
:klass => klass.name,
|
|
17
|
-
:other => value.class.name,
|
|
18
|
-
:value => value.inspect
|
|
19
|
-
}
|
|
20
|
-
)
|
|
21
|
-
)
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid #:nodoc:
|
|
3
|
-
module Extensions #:nodoc:
|
|
4
|
-
module Array #:nodoc:
|
|
5
|
-
module DeepCopy #:nodoc:
|
|
6
|
-
|
|
7
|
-
# Make a deep copy of the array.
|
|
8
|
-
#
|
|
9
|
-
# @example Make a deep copy.
|
|
10
|
-
# [ 1, 2, 3 ]._deep_copy
|
|
11
|
-
#
|
|
12
|
-
# @return [ Array ] The deep copy.
|
|
13
|
-
#
|
|
14
|
-
# @since 2.4.0
|
|
15
|
-
def _deep_copy
|
|
16
|
-
[].tap do |copy|
|
|
17
|
-
each do |value|
|
|
18
|
-
copy.push(value._deep_copy)
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid #:nodoc:
|
|
3
|
-
module Extensions #:nodoc:
|
|
4
|
-
module Array #:nodoc:
|
|
5
|
-
|
|
6
|
-
# This module contains deletion helpers for arrays.
|
|
7
|
-
module Deletion
|
|
8
|
-
|
|
9
|
-
# Delete the first object in the array that is equal to the supplied
|
|
10
|
-
# object and return it. This is much faster than performing a standard
|
|
11
|
-
# delete for large arrays ince it attempt to delete multiple in the
|
|
12
|
-
# other.
|
|
13
|
-
#
|
|
14
|
-
# @example Delete the first object.
|
|
15
|
-
# [ "1", "2", "1" ].delete_one("1")
|
|
16
|
-
#
|
|
17
|
-
# @param [ Object ] object The object to delete.
|
|
18
|
-
#
|
|
19
|
-
# @return [ Object ] The deleted object.
|
|
20
|
-
#
|
|
21
|
-
# @since 2.1.0
|
|
22
|
-
def delete_one(object)
|
|
23
|
-
position = index(object)
|
|
24
|
-
position ? delete_at(position) : nil
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid #:nodoc:
|
|
3
|
-
module Extensions #:nodoc:
|
|
4
|
-
module FalseClass #:nodoc:
|
|
5
|
-
|
|
6
|
-
# Adds equality hooks for false values.
|
|
7
|
-
module Equality
|
|
8
|
-
|
|
9
|
-
# Is the passed value a boolean?
|
|
10
|
-
#
|
|
11
|
-
# @example Is the value a boolean type?
|
|
12
|
-
# false.is_a?(Boolean)
|
|
13
|
-
#
|
|
14
|
-
# @param [ Class ] other The class to check.
|
|
15
|
-
#
|
|
16
|
-
# @return [ true, false ] If the other is a boolean.
|
|
17
|
-
#
|
|
18
|
-
# @since 1.0.0
|
|
19
|
-
def is_a?(other)
|
|
20
|
-
return true if other.name == "Boolean"
|
|
21
|
-
super(other)
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid #:nodoc:
|
|
3
|
-
module Extensions #:nodoc:
|
|
4
|
-
module Hash #:nodoc:
|
|
5
|
-
|
|
6
|
-
# Expands complex criterion into mongodb selectors.
|
|
7
|
-
module CriteriaHelpers
|
|
8
|
-
|
|
9
|
-
# Expand the complex criteria into a MongoDB compliant selector hash.
|
|
10
|
-
#
|
|
11
|
-
# @example Convert the criterion.
|
|
12
|
-
# {}.expand_complex_criteria
|
|
13
|
-
#
|
|
14
|
-
# @return [ Hash ] The mongo selector.
|
|
15
|
-
#
|
|
16
|
-
# @since 1.0.0
|
|
17
|
-
def expand_complex_criteria
|
|
18
|
-
{}.tap do |hsh|
|
|
19
|
-
each_pair do |k, v|
|
|
20
|
-
if k.respond_to?(:key) && k.respond_to?(:to_mongo_query)
|
|
21
|
-
hsh[k.key] ||= {}
|
|
22
|
-
v = v.expand_complex_criteria if v.is_a?(::Hash)
|
|
23
|
-
hsh[k.key].merge!(k.to_mongo_query(v))
|
|
24
|
-
else
|
|
25
|
-
v.map!{|e| e.is_a?(::Hash) ? e.expand_complex_criteria : e } if v.is_a?(::Array)
|
|
26
|
-
hsh[k] = v
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
# Get the id attribute from this hash, whether it's prefixed with an
|
|
33
|
-
# underscore or is a symbol.
|
|
34
|
-
#
|
|
35
|
-
# @example Extract the id.
|
|
36
|
-
# { :_id => 1 }.extract_id
|
|
37
|
-
#
|
|
38
|
-
# @return [ Object ] The value of the id.
|
|
39
|
-
#
|
|
40
|
-
# @since 2.3.2
|
|
41
|
-
def extract_id
|
|
42
|
-
self["id"] || self["_id"] || self[:id] || self[:_id]
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid #:nodoc:
|
|
3
|
-
module Extensions #:nodoc:
|
|
4
|
-
module Hash #:nodoc:
|
|
5
|
-
module DeepCopy #:nodoc:
|
|
6
|
-
|
|
7
|
-
# Make a deep copy of the hash.
|
|
8
|
-
#
|
|
9
|
-
# @example Make a deep copy.
|
|
10
|
-
# { :test => "value" }._deep_copy
|
|
11
|
-
#
|
|
12
|
-
# @return [ Hash ] The deep copy.
|
|
13
|
-
#
|
|
14
|
-
# @since 2.4.0
|
|
15
|
-
def _deep_copy
|
|
16
|
-
{}.tap do |copy|
|
|
17
|
-
each_pair do |key, value|
|
|
18
|
-
copy[key] = value._deep_copy
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid #:nodoc:
|
|
3
|
-
module Extensions #:nodoc:
|
|
4
|
-
module Hash #:nodoc:
|
|
5
|
-
|
|
6
|
-
# Adds functionality for criteria scoping/merging.
|
|
7
|
-
module Scoping
|
|
8
|
-
|
|
9
|
-
# Get the hash scoped for criteria merges.
|
|
10
|
-
#
|
|
11
|
-
# @example Get the hash.
|
|
12
|
-
# { :field => "value" }.scoped
|
|
13
|
-
#
|
|
14
|
-
# @param [ Array ] args The arguments (ignored).
|
|
15
|
-
#
|
|
16
|
-
# @return [ Hash ] The hash unmodified.
|
|
17
|
-
#
|
|
18
|
-
# @since 1.0.0
|
|
19
|
-
def as_conditions(*args)
|
|
20
|
-
self
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid #:nodoc:
|
|
3
|
-
module Extensions #:nodoc:
|
|
4
|
-
module Integer #:nodoc:
|
|
5
|
-
|
|
6
|
-
# This module has object checks in it.
|
|
7
|
-
module Checks #:nodoc:
|
|
8
|
-
|
|
9
|
-
# Is the object not to be converted to bson on criteria creation?
|
|
10
|
-
#
|
|
11
|
-
# @example Is the object unconvertable?
|
|
12
|
-
# object.unconvertable_to_bson?
|
|
13
|
-
#
|
|
14
|
-
# @return [ true ] If the object is unconvertable.
|
|
15
|
-
#
|
|
16
|
-
# @since 2.2.1
|
|
17
|
-
def unconvertable_to_bson?
|
|
18
|
-
true
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid #:nodoc:
|
|
3
|
-
module Extensions #:nodoc:
|
|
4
|
-
module Nil #:nodoc:
|
|
5
|
-
|
|
6
|
-
# This module safeguards collection access on anonymous classes.
|
|
7
|
-
module Collectionization
|
|
8
|
-
|
|
9
|
-
# Get the name of a nil collection.
|
|
10
|
-
#
|
|
11
|
-
# @example Get the nil name.
|
|
12
|
-
# nil.collectionize
|
|
13
|
-
#
|
|
14
|
-
# @return [ String ] A blank string.
|
|
15
|
-
#
|
|
16
|
-
# @since 1.0.0
|
|
17
|
-
def collectionize
|
|
18
|
-
to_s.collectionize
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid #:nodoc:
|
|
3
|
-
module Extensions #:nodoc:
|
|
4
|
-
module Object #:nodoc:
|
|
5
|
-
|
|
6
|
-
# This module has object checks in it.
|
|
7
|
-
module Checks #:nodoc:
|
|
8
|
-
|
|
9
|
-
# Since Active Support's blank? check looks to see if the object
|
|
10
|
-
# responds to #empty? and will call it if it does, we need another way
|
|
11
|
-
# to check if the object is empty or nil in case the user has defined a
|
|
12
|
-
# field called "empty" on the document.
|
|
13
|
-
#
|
|
14
|
-
# @example Is the array vacant?
|
|
15
|
-
# [].vacant?
|
|
16
|
-
#
|
|
17
|
-
# @example Is the object vacant?
|
|
18
|
-
# nil.vacant?
|
|
19
|
-
#
|
|
20
|
-
# @return [ true, false ] True if empty or nil, false if not.
|
|
21
|
-
#
|
|
22
|
-
# @since 2.0.2
|
|
23
|
-
def _vacant?
|
|
24
|
-
is_a?(::Array) || is_a?(::String) ? empty? : !self
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid #:nodoc:
|
|
3
|
-
module Extensions #:nodoc:
|
|
4
|
-
module Object #:nodoc:
|
|
5
|
-
module DeepCopy #:nodoc:
|
|
6
|
-
|
|
7
|
-
# Make a deep copy of the object.
|
|
8
|
-
#
|
|
9
|
-
# @example Make a deep copy.
|
|
10
|
-
# "testing"._deep_copy
|
|
11
|
-
#
|
|
12
|
-
# @return [ Object ] The deep copy.
|
|
13
|
-
#
|
|
14
|
-
# @since 2.4.0
|
|
15
|
-
def _deep_copy
|
|
16
|
-
duplicable? ? dup : self
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid #:nodoc:
|
|
3
|
-
module Extensions #:nodoc:
|
|
4
|
-
module Object #:nodoc:
|
|
5
|
-
|
|
6
|
-
# This module contains reflection convenience methods.
|
|
7
|
-
module Reflections
|
|
8
|
-
extend ActiveSupport::Concern
|
|
9
|
-
|
|
10
|
-
# Get the value for an instance variable or nil if it doesn't exist.
|
|
11
|
-
#
|
|
12
|
-
# @example Get the value for an instance var.
|
|
13
|
-
# document.ivar("person")
|
|
14
|
-
#
|
|
15
|
-
# @param [ String ] name The name of the variable.
|
|
16
|
-
#
|
|
17
|
-
# @return [ Object, nil ] The value or nil.
|
|
18
|
-
#
|
|
19
|
-
# @since 2.0.0.rc.1
|
|
20
|
-
def ivar(name)
|
|
21
|
-
if instance_variable_defined?("@#{name}")
|
|
22
|
-
return instance_variable_get("@#{name}")
|
|
23
|
-
else
|
|
24
|
-
false
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# Remove the instance variable for the provided name.
|
|
29
|
-
#
|
|
30
|
-
# @example Remove the instance variable
|
|
31
|
-
# document.remove_ivar("person")
|
|
32
|
-
#
|
|
33
|
-
# @param [ String ] name The name of the variable.
|
|
34
|
-
#
|
|
35
|
-
# @return [ true, false ] If the variable was defined.
|
|
36
|
-
#
|
|
37
|
-
# @since 2.1.0
|
|
38
|
-
def remove_ivar(name)
|
|
39
|
-
if instance_variable_defined?("@#{name}")
|
|
40
|
-
return remove_instance_variable("@#{name}")
|
|
41
|
-
else
|
|
42
|
-
false
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
module Mongoid #:nodoc:
|
|
3
|
-
module Extensions #:nodoc:
|
|
4
|
-
module Object #:nodoc:
|
|
5
|
-
|
|
6
|
-
# This module is for defining base substitutable behaviour.
|
|
7
|
-
module Substitutable #:nodoc:
|
|
8
|
-
|
|
9
|
-
def substitutable
|
|
10
|
-
self
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|