mongoid 6.4.2 → 7.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/config/locales/en.yml +17 -0
- data/lib/mongoid/association/accessors.rb +339 -0
- data/lib/mongoid/{relations/binding.rb → association/bindable.rb} +32 -52
- data/lib/mongoid/association/builders.rb +92 -0
- data/lib/mongoid/{relations/constraint.rb → association/constrainable.rb} +11 -22
- data/lib/mongoid/association/depending.rb +137 -0
- data/lib/mongoid/{relations/eager.rb → association/eager_loadable.rb} +11 -11
- data/lib/mongoid/{relations → association}/embedded/batchable.rb +19 -19
- data/lib/mongoid/association/embedded/cyclic.rb +109 -0
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +56 -0
- data/lib/mongoid/{relations/builders/embedded/in.rb → association/embedded/embedded_in/buildable.rb} +12 -6
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +121 -0
- data/lib/mongoid/association/embedded/embedded_in.rb +154 -0
- data/lib/mongoid/{relations/bindings/embedded/many.rb → association/embedded/embeds_many/binding.rb} +11 -9
- data/lib/mongoid/{relations/builders/embedded/many.rb → association/embedded/embeds_many/buildable.rb} +13 -7
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +552 -0
- data/lib/mongoid/association/embedded/embeds_many.rb +210 -0
- data/lib/mongoid/{relations/bindings/embedded/one.rb → association/embedded/embeds_one/binding.rb} +12 -10
- data/lib/mongoid/{relations/builders/embedded/one.rb → association/embedded/embeds_one/buildable.rb} +13 -7
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +130 -0
- data/lib/mongoid/association/embedded/embeds_one.rb +173 -0
- data/lib/mongoid/association/embedded.rb +4 -0
- data/lib/mongoid/association/macros.rb +204 -0
- data/lib/mongoid/{relations → association}/many.rb +19 -49
- data/lib/mongoid/{relations → association}/marshalable.rb +6 -4
- data/lib/mongoid/association/nested/many.rb +200 -0
- data/lib/mongoid/association/nested/nested_buildable.rb +72 -0
- data/lib/mongoid/association/nested/one.rb +127 -0
- data/lib/mongoid/association/nested.rb +15 -0
- data/lib/mongoid/{relations → association}/one.rb +6 -6
- data/lib/mongoid/association/options.rb +152 -0
- data/lib/mongoid/{relations → association}/proxy.rb +31 -58
- data/lib/mongoid/association/referenced/auto_save.rb +79 -0
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +87 -0
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +46 -0
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +36 -0
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +136 -0
- data/lib/mongoid/association/referenced/belongs_to.rb +248 -0
- data/lib/mongoid/association/referenced/counter_cache.rb +163 -0
- data/lib/mongoid/association/referenced/eager.rb +162 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +71 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +40 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +52 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +312 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +290 -0
- data/lib/mongoid/{relations/bindings/referenced/many.rb → association/referenced/has_many/binding.rb} +6 -5
- data/lib/mongoid/association/referenced/has_many/buildable.rb +38 -0
- data/lib/mongoid/association/referenced/has_many/eager.rb +43 -0
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +510 -0
- data/lib/mongoid/association/referenced/has_many/proxy.rb +578 -0
- data/lib/mongoid/association/referenced/has_many.rb +275 -0
- data/lib/mongoid/{relations/bindings/referenced/one.rb → association/referenced/has_one/binding.rb} +11 -8
- data/lib/mongoid/association/referenced/has_one/buildable.rb +60 -0
- data/lib/mongoid/association/referenced/has_one/eager.rb +35 -0
- data/lib/mongoid/{relations/builders/nested_attributes/one.rb → association/referenced/has_one/nested_builder.rb} +9 -9
- data/lib/mongoid/association/referenced/has_one/proxy.rb +113 -0
- data/lib/mongoid/association/referenced/has_one.rb +204 -0
- data/lib/mongoid/association/referenced/syncable.rb +170 -0
- data/lib/mongoid/association/referenced.rb +7 -0
- data/lib/mongoid/{relations → association}/reflections.rb +21 -17
- data/lib/mongoid/association/relatable.rb +509 -0
- data/lib/mongoid/{relations.rb → association.rb} +57 -56
- data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
- data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
- data/lib/mongoid/atomic.rb +4 -4
- data/lib/mongoid/attributes/dynamic.rb +2 -2
- data/lib/mongoid/attributes/nested.rb +22 -11
- data/lib/mongoid/attributes/processing.rb +2 -2
- data/lib/mongoid/attributes/readonly.rb +2 -4
- data/lib/mongoid/attributes.rb +22 -13
- data/lib/mongoid/changeable.rb +1 -1
- data/lib/mongoid/clients/options.rb +7 -5
- data/lib/mongoid/composable.rb +4 -4
- data/lib/mongoid/config.rb +1 -0
- data/lib/mongoid/contextual/atomic.rb +1 -1
- data/lib/mongoid/contextual/geo_near.rb +1 -1
- data/lib/mongoid/contextual/memory.rb +21 -3
- data/lib/mongoid/contextual/mongo.rb +10 -8
- data/lib/mongoid/copyable.rb +7 -6
- data/lib/mongoid/criteria/includable.rb +14 -14
- data/lib/mongoid/criteria/modifiable.rb +8 -14
- data/lib/mongoid/criteria/options.rb +2 -2
- data/lib/mongoid/criteria/queryable/extensions/string.rb +1 -1
- data/lib/mongoid/criteria/queryable/pipeline.rb +10 -5
- data/lib/mongoid/criteria/queryable/selectable.rb +37 -7
- data/lib/mongoid/criteria.rb +2 -2
- data/lib/mongoid/document.rb +15 -6
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +32 -0
- data/lib/mongoid/errors/invalid_relation_option.rb +29 -0
- data/lib/mongoid/errors/unknown_model.rb +25 -0
- data/lib/mongoid/errors.rb +3 -0
- data/lib/mongoid/extensions/array.rb +5 -5
- data/lib/mongoid/extensions/big_decimal.rb +1 -1
- data/lib/mongoid/extensions/hash.rb +5 -2
- data/lib/mongoid/extensions/object.rb +4 -4
- data/lib/mongoid/extensions/range.rb +1 -0
- data/lib/mongoid/extensions/regexp.rb +1 -0
- data/lib/mongoid/extensions.rb +0 -4
- data/lib/mongoid/factory.rb +13 -3
- data/lib/mongoid/fields/foreign_key.rb +5 -5
- data/lib/mongoid/fields/standard.rb +2 -14
- data/lib/mongoid/fields/validators/macro.rb +1 -1
- data/lib/mongoid/fields.rb +3 -3
- data/lib/mongoid/indexable.rb +4 -1
- data/lib/mongoid/interceptable.rb +5 -5
- data/lib/mongoid/matchable/and.rb +1 -1
- data/lib/mongoid/matchable/elem_match.rb +9 -3
- data/lib/mongoid/matchable/eq.rb +22 -0
- data/lib/mongoid/matchable/ne.rb +1 -1
- data/lib/mongoid/matchable.rb +3 -1
- data/lib/mongoid/persistable/deletable.rb +7 -6
- data/lib/mongoid/persistable/incrementable.rb +1 -1
- data/lib/mongoid/persistable/logical.rb +1 -1
- data/lib/mongoid/persistable/settable.rb +57 -12
- data/lib/mongoid/persistable.rb +4 -5
- data/lib/mongoid/persistence_context.rb +20 -5
- data/lib/mongoid/query_cache.rb +8 -4
- data/lib/mongoid/railtie.rb +17 -0
- data/lib/mongoid/railties/controller_runtime.rb +86 -0
- data/lib/mongoid/scopable.rb +3 -3
- data/lib/mongoid/serializable.rb +4 -4
- data/lib/mongoid/shardable.rb +1 -1
- data/lib/mongoid/threaded.rb +36 -0
- data/lib/mongoid/touchable.rb +102 -0
- data/lib/mongoid/traversable.rb +3 -3
- data/lib/mongoid/validatable/presence.rb +2 -2
- data/lib/mongoid/validatable/uniqueness.rb +4 -4
- data/lib/mongoid/validatable.rb +8 -8
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +3 -0
- data/spec/app/models/animal.rb +2 -1
- data/spec/app/models/bomb.rb +1 -1
- data/spec/app/models/message.rb +1 -1
- data/spec/app/models/minim.rb +7 -0
- data/spec/app/models/person.rb +5 -2
- data/spec/app/models/shipment_address.rb +1 -0
- data/spec/app/models/store_as_dup_test3.rb +7 -0
- data/spec/app/models/store_as_dup_test4.rb +7 -0
- data/spec/app/models/updatable.rb +7 -0
- data/spec/app/models/vertex.rb +6 -0
- data/spec/app/models/wiki_page.rb +1 -1
- data/spec/config/mongoid.yml +13 -3
- data/spec/integration/associations/belongs_to_spec.rb +13 -0
- data/spec/lite_spec_helper.rb +56 -0
- data/spec/mongoid/{relations → association}/accessors_spec.rb +40 -1
- data/spec/mongoid/{relations → association}/auto_save_spec.rb +60 -12
- data/spec/mongoid/{relations → association}/builders_spec.rb +1 -1
- data/spec/mongoid/association/constrainable_spec.rb +115 -0
- data/spec/mongoid/{relations → association}/counter_cache_spec.rb +1 -1
- data/spec/mongoid/association/depending_spec.rb +866 -0
- data/spec/mongoid/{relations → association}/eager_spec.rb +12 -12
- data/spec/mongoid/{relations → association/embedded}/cyclic_spec.rb +1 -1
- data/spec/mongoid/{relations/bindings/embedded/in_spec.rb → association/embedded/embedded_in/binding_spec.rb} +13 -13
- data/spec/mongoid/{relations/builders/embedded/in_spec.rb → association/embedded/embedded_in/buildable_spec.rb} +9 -9
- data/spec/mongoid/{relations/embedded/in_spec.rb → association/embedded/embedded_in/proxy_spec.rb} +5 -77
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +843 -0
- data/spec/mongoid/{relations/bindings/embedded/many_spec.rb → association/embedded/embeds_many/binding_spec.rb} +3 -3
- data/spec/mongoid/{relations/builders/embedded/many_spec.rb → association/embedded/embeds_many/buildable_spec.rb} +17 -45
- data/spec/mongoid/{relations/embedded/many_spec.rb → association/embedded/embeds_many/proxy_spec.rb} +124 -182
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +852 -0
- data/spec/mongoid/{relations/bindings/embedded/one_spec.rb → association/embedded/embeds_one/binding_spec.rb} +4 -4
- data/spec/mongoid/{relations/builders/embedded/one_spec.rb → association/embedded/embeds_one/buildable_spec.rb} +14 -34
- data/spec/mongoid/{relations/embedded/one_spec.rb → association/embedded/embeds_one/proxy_spec.rb} +39 -84
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +908 -0
- data/spec/mongoid/{relations → association}/macros_spec.rb +148 -73
- data/spec/mongoid/{relations/builders/nested_attributes → association/nested}/many_spec.rb +16 -19
- data/spec/mongoid/{relations/builders/nested_attributes → association/nested}/one_spec.rb +17 -20
- data/spec/mongoid/association/options_spec.rb +1321 -0
- data/spec/mongoid/{relations → association}/polymorphic_spec.rb +66 -34
- data/spec/mongoid/{relations/bindings/referenced/in_spec.rb → association/referenced/belongs_to/binding_spec.rb} +7 -7
- data/spec/mongoid/{relations/builders/referenced/in_spec.rb → association/referenced/belongs_to/buildable_spec.rb} +46 -79
- data/spec/mongoid/{relations/eager/belongs_to_spec.rb → association/referenced/belongs_to/eager_spec.rb} +33 -14
- data/spec/mongoid/{relations/referenced/in_spec.rb → association/referenced/belongs_to/proxy_spec.rb} +57 -91
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +2006 -0
- data/spec/mongoid/{relations/bindings/referenced/many_to_many_spec.rb → association/referenced/has_and_belongs_to_many/binding_spec.rb} +5 -5
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +121 -0
- data/spec/mongoid/{relations/eager/has_and_belongs_to_many_spec.rb → association/referenced/has_and_belongs_to_many/eager_spec.rb} +26 -7
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +56 -0
- data/spec/mongoid/{relations/referenced/many_to_many_spec.rb → association/referenced/has_and_belongs_to_many/proxy_spec.rb} +107 -98
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +26 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +1027 -0
- data/spec/mongoid/{relations/bindings/referenced/many_spec.rb → association/referenced/has_many/binding_spec.rb} +5 -5
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +119 -0
- data/spec/mongoid/{relations/eager/has_many_spec.rb → association/referenced/has_many/eager_spec.rb} +26 -11
- data/spec/mongoid/{relations/targets → association/referenced/has_many}/enumerable_spec.rb +122 -1
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +23 -0
- data/spec/mongoid/{relations/referenced/many_spec.rb → association/referenced/has_many/proxy_spec.rb} +28 -93
- data/spec/mongoid/association/referenced/has_many_models.rb +37 -0
- data/spec/mongoid/association/referenced/has_many_spec.rb +1225 -0
- data/spec/mongoid/{relations/bindings/referenced/one_spec.rb → association/referenced/has_one/binding_spec.rb} +4 -4
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +113 -0
- data/spec/mongoid/{relations/eager/has_one_spec.rb → association/referenced/has_one/eager_spec.rb} +10 -10
- data/spec/mongoid/{relations/referenced/one_spec.rb → association/referenced/has_one/proxy_spec.rb} +9 -109
- data/spec/mongoid/association/referenced/has_one_models.rb +48 -0
- data/spec/mongoid/association/referenced/has_one_spec.rb +1350 -0
- data/spec/mongoid/{relations → association}/reflections_spec.rb +1 -12
- data/spec/mongoid/{relations/synchronization_spec.rb → association/syncable_spec.rb} +4 -2
- data/spec/mongoid/{relations_spec.rb → association_spec.rb} +1 -1
- data/spec/mongoid/atomic/modifiers_spec.rb +2 -2
- data/spec/mongoid/atomic_spec.rb +4 -4
- data/spec/mongoid/attributes/nested_spec.rb +29 -11
- data/spec/mongoid/attributes/readonly_spec.rb +80 -125
- data/spec/mongoid/attributes_spec.rb +38 -2
- data/spec/mongoid/clients/factory_spec.rb +24 -18
- data/spec/mongoid/clients/options_spec.rb +58 -44
- data/spec/mongoid/clients/sessions_spec.rb +1 -1
- data/spec/mongoid/clients/transactions_spec.rb +369 -0
- data/spec/mongoid/clients_spec.rb +68 -8
- data/spec/mongoid/config_spec.rb +27 -1
- data/spec/mongoid/contextual/memory_spec.rb +19 -0
- data/spec/mongoid/contextual/mongo_spec.rb +33 -5
- data/spec/mongoid/copyable_spec.rb +90 -6
- data/spec/mongoid/copyable_spec_models.rb +17 -0
- data/spec/mongoid/criteria/modifiable_spec.rb +183 -60
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +3 -3
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +43 -0
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +12 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +42 -3
- data/spec/mongoid/criteria/queryable/selector_spec.rb +2 -2
- data/spec/mongoid/criteria/scopable_spec.rb +81 -0
- data/spec/mongoid/criteria_spec.rb +33 -18
- data/spec/mongoid/document_spec.rb +83 -4
- data/spec/mongoid/extensions/array_spec.rb +11 -15
- data/spec/mongoid/extensions/big_decimal_spec.rb +9 -9
- data/spec/mongoid/extensions/hash_spec.rb +18 -1
- data/spec/mongoid/extensions/object_spec.rb +7 -11
- data/spec/mongoid/extensions/range_spec.rb +7 -0
- data/spec/mongoid/extensions/regexp_spec.rb +23 -0
- data/spec/mongoid/factory_spec.rb +19 -1
- data/spec/mongoid/fields/foreign_key_spec.rb +24 -32
- data/spec/mongoid/fields_spec.rb +2 -2
- data/spec/mongoid/findable_spec.rb +1 -1
- data/spec/mongoid/indexable_spec.rb +18 -8
- data/spec/mongoid/interceptable_spec.rb +22 -1
- data/spec/mongoid/matchable/elem_match_spec.rb +20 -0
- data/spec/mongoid/matchable/eq_spec.rb +48 -0
- data/spec/mongoid/persistable/incrementable_spec.rb +6 -6
- data/spec/mongoid/persistable/savable_spec.rb +2 -2
- data/spec/mongoid/persistable/settable_spec.rb +95 -10
- data/spec/mongoid/persistable_spec.rb +21 -6
- data/spec/mongoid/persistence_context_spec.rb +1 -1
- data/spec/mongoid/query_cache_spec.rb +61 -22
- data/spec/mongoid/relations/proxy_spec.rb +124 -124
- data/spec/mongoid/scopable_spec.rb +13 -0
- data/spec/mongoid/shardable_spec.rb +32 -12
- data/spec/mongoid/threaded_spec.rb +68 -0
- data/spec/mongoid/{relations/touchable_spec.rb → touchable_spec.rb} +40 -1
- data/spec/mongoid/validatable/associated_spec.rb +1 -1
- data/spec/mongoid/validatable/presence_spec.rb +7 -6
- data/spec/mongoid/validatable_spec.rb +1 -1
- data/spec/rails/controller_extension/controller_runtime_spec.rb +110 -0
- data/spec/spec_helper.rb +51 -25
- data/spec/support/constraints.rb +101 -0
- data/spec/support/macros.rb +20 -0
- data/spec/support/spec_config.rb +39 -0
- metadata +602 -582
- checksums.yaml.gz.sig +0 -2
- data/lib/mongoid/relations/accessors.rb +0 -267
- data/lib/mongoid/relations/auto_save.rb +0 -94
- data/lib/mongoid/relations/bindings/embedded/in.rb +0 -59
- data/lib/mongoid/relations/bindings/referenced/in.rb +0 -65
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +0 -70
- data/lib/mongoid/relations/bindings.rb +0 -9
- data/lib/mongoid/relations/builder.rb +0 -57
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +0 -199
- data/lib/mongoid/relations/builders/referenced/in.rb +0 -26
- data/lib/mongoid/relations/builders/referenced/many.rb +0 -26
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +0 -39
- data/lib/mongoid/relations/builders/referenced/one.rb +0 -26
- data/lib/mongoid/relations/builders.rb +0 -106
- data/lib/mongoid/relations/cascading/delete.rb +0 -44
- data/lib/mongoid/relations/cascading/destroy.rb +0 -43
- data/lib/mongoid/relations/cascading/nullify.rb +0 -35
- data/lib/mongoid/relations/cascading/restrict.rb +0 -39
- data/lib/mongoid/relations/cascading.rb +0 -56
- data/lib/mongoid/relations/conversions.rb +0 -34
- data/lib/mongoid/relations/counter_cache.rb +0 -160
- data/lib/mongoid/relations/cyclic.rb +0 -107
- data/lib/mongoid/relations/eager/base.rb +0 -153
- data/lib/mongoid/relations/eager/belongs_to.rb +0 -31
- data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +0 -47
- data/lib/mongoid/relations/eager/has_many.rb +0 -38
- data/lib/mongoid/relations/eager/has_one.rb +0 -30
- data/lib/mongoid/relations/embedded/in.rb +0 -241
- data/lib/mongoid/relations/embedded/many.rb +0 -683
- data/lib/mongoid/relations/embedded/one.rb +0 -235
- data/lib/mongoid/relations/macros.rb +0 -367
- data/lib/mongoid/relations/metadata.rb +0 -1179
- data/lib/mongoid/relations/nested_builder.rb +0 -74
- data/lib/mongoid/relations/options.rb +0 -49
- data/lib/mongoid/relations/polymorphic.rb +0 -39
- data/lib/mongoid/relations/referenced/in.rb +0 -304
- data/lib/mongoid/relations/referenced/many.rb +0 -812
- data/lib/mongoid/relations/referenced/many_to_many.rb +0 -479
- data/lib/mongoid/relations/referenced/one.rb +0 -290
- data/lib/mongoid/relations/synchronization.rb +0 -169
- data/lib/mongoid/relations/targets/enumerable.rb +0 -493
- data/lib/mongoid/relations/targets.rb +0 -2
- data/lib/mongoid/relations/touchable.rb +0 -97
- data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +0 -184
- data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +0 -201
- data/spec/mongoid/relations/builders/referenced/many_spec.rb +0 -137
- data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +0 -178
- data/spec/mongoid/relations/builders/referenced/one_spec.rb +0 -111
- data/spec/mongoid/relations/cascading/delete_spec.rb +0 -101
- data/spec/mongoid/relations/cascading/destroy_spec.rb +0 -47
- data/spec/mongoid/relations/cascading/nullify_spec.rb +0 -32
- data/spec/mongoid/relations/cascading/restrict_spec.rb +0 -68
- data/spec/mongoid/relations/cascading_spec.rb +0 -355
- data/spec/mongoid/relations/constraint_spec.rb +0 -75
- data/spec/mongoid/relations/conversions_spec.rb +0 -128
- data/spec/mongoid/relations/metadata_spec.rb +0 -1985
- data/spec/mongoid/relations/options_spec.rb +0 -35
- data.tar.gz.sig +0 -0
- metadata.gz.sig +0 -0
- /data/spec/mongoid/{relations → association}/embedded/dirty_spec.rb +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require "spec_helper"
|
|
2
2
|
|
|
3
|
-
describe Mongoid::
|
|
3
|
+
describe Mongoid::Association::Referenced::HasAndBelongsToMany::Binding do
|
|
4
4
|
|
|
5
5
|
let(:person) do
|
|
6
6
|
Person.new
|
|
@@ -11,17 +11,17 @@ describe Mongoid::Relations::Bindings::Referenced::ManyToMany do
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
let(:target) do
|
|
14
|
-
Mongoid::
|
|
14
|
+
Mongoid::Association::Referenced::HasMany::Targets::Enumerable.new([ preference ])
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
let(:
|
|
17
|
+
let(:association) do
|
|
18
18
|
Person.relations["preferences"]
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
describe "#bind_one" do
|
|
22
22
|
|
|
23
23
|
let(:binding) do
|
|
24
|
-
described_class.new(person, target,
|
|
24
|
+
described_class.new(person, target, association)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
context "when the document is bindable" do
|
|
@@ -77,7 +77,7 @@ describe Mongoid::Relations::Bindings::Referenced::ManyToMany do
|
|
|
77
77
|
describe "#unbind_one" do
|
|
78
78
|
|
|
79
79
|
let(:binding) do
|
|
80
|
-
described_class.new(person, target,
|
|
80
|
+
described_class.new(person, target, association)
|
|
81
81
|
end
|
|
82
82
|
|
|
83
83
|
context "when the documents are unbindable" do
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Association::Referenced::HasAndBelongsToMany::Buildable do
|
|
4
|
+
|
|
5
|
+
let(:base) do
|
|
6
|
+
double
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
let(:options) do
|
|
10
|
+
{ }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe "#build" do
|
|
14
|
+
|
|
15
|
+
let(:documents) do
|
|
16
|
+
association.build(base, object)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
let(:association) do
|
|
20
|
+
Mongoid::Association::Referenced::HasAndBelongsToMany.new(Person, :preferences, options)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
context "when provided ids" do
|
|
24
|
+
|
|
25
|
+
let(:object_id) do
|
|
26
|
+
BSON::ObjectId.new
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
let(:object) do
|
|
30
|
+
[ object_id ]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
let(:criteria) do
|
|
34
|
+
Preference.all_of("_id" => { "$in" => object })
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "returns the criteria" do
|
|
38
|
+
expect(documents).to eq(criteria)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
context "when order specified" do
|
|
43
|
+
|
|
44
|
+
let(:object_id) do
|
|
45
|
+
BSON::ObjectId.new
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
let(:options) do
|
|
49
|
+
{
|
|
50
|
+
order: :rating.desc
|
|
51
|
+
}
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
let(:object) do
|
|
55
|
+
[ object_id ]
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
let(:criteria) do
|
|
59
|
+
Preference.all_of("_id" => { "$in" => object }).order_by(options[:order])
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "returns the criteria" do
|
|
63
|
+
expect(documents).to eq(criteria)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
context "when provided a object" do
|
|
68
|
+
|
|
69
|
+
context "when the object is not nil" do
|
|
70
|
+
|
|
71
|
+
let(:object) do
|
|
72
|
+
[ Post.new ]
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
it "returns the objects" do
|
|
76
|
+
expect(documents).to eq(object)
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
context "when the object is nil" do
|
|
81
|
+
|
|
82
|
+
let(:object) do
|
|
83
|
+
nil
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
let(:criteria) do
|
|
87
|
+
Preference.all_of("_id" => { "$in" => [] })
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it "a criteria object" do
|
|
91
|
+
expect(documents).to eq(criteria)
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
context "when no documents found in the database" do
|
|
97
|
+
|
|
98
|
+
context "when the ids are empty" do
|
|
99
|
+
|
|
100
|
+
it "returns an empty array" do
|
|
101
|
+
expect(Person.new.preferences).to be_empty
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
context "when the ids are incorrect" do
|
|
106
|
+
|
|
107
|
+
let(:person) do
|
|
108
|
+
Person.create
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
before do
|
|
112
|
+
person.preference_ids = [ BSON::ObjectId.new ]
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
it "returns an empty array" do
|
|
116
|
+
expect(person.preferences).to be_empty
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
require "spec_helper"
|
|
2
|
+
require_relative '../has_and_belongs_to_many_models'
|
|
2
3
|
|
|
3
|
-
describe Mongoid::
|
|
4
|
+
describe Mongoid::Association::Referenced::HasAndBelongsToMany::Eager do
|
|
4
5
|
|
|
5
6
|
describe ".keys_from_docs" do
|
|
6
7
|
|
|
@@ -16,18 +17,18 @@ describe Mongoid::Relations::Eager::HasAndBelongsToMany do
|
|
|
16
17
|
House.create!
|
|
17
18
|
end
|
|
18
19
|
|
|
19
|
-
let(:
|
|
20
|
+
let(:association) do
|
|
20
21
|
Person.reflect_on_association(:houses)
|
|
21
22
|
end
|
|
22
23
|
|
|
23
24
|
let(:eager) do
|
|
24
|
-
described_class.new([
|
|
25
|
-
b.
|
|
25
|
+
described_class.new([association], docs).tap do |b|
|
|
26
|
+
b.send(:shift_association)
|
|
26
27
|
end
|
|
27
28
|
end
|
|
28
29
|
|
|
29
30
|
it "aggregates by the foreign key" do
|
|
30
|
-
expect(eager.keys_from_docs).to eq([house.id])
|
|
31
|
+
expect(eager.send(:keys_from_docs)).to eq([house.id])
|
|
31
32
|
end
|
|
32
33
|
end
|
|
33
34
|
|
|
@@ -41,7 +42,7 @@ describe Mongoid::Relations::Eager::HasAndBelongsToMany do
|
|
|
41
42
|
Person.create!(houses: 3.times.map { House.create! })
|
|
42
43
|
end
|
|
43
44
|
|
|
44
|
-
context "when including the has_and_belongs_to_many
|
|
45
|
+
context "when including the has_and_belongs_to_many association" do
|
|
45
46
|
|
|
46
47
|
it "queries twice" do
|
|
47
48
|
expect_query(2) do
|
|
@@ -60,7 +61,7 @@ describe Mongoid::Relations::Eager::HasAndBelongsToMany do
|
|
|
60
61
|
end
|
|
61
62
|
end
|
|
62
63
|
|
|
63
|
-
context "when the
|
|
64
|
+
context "when the association is not polymorphic" do
|
|
64
65
|
|
|
65
66
|
let(:eager) do
|
|
66
67
|
Person.asc(:_id).includes(:preferences).last
|
|
@@ -129,5 +130,23 @@ describe Mongoid::Relations::Eager::HasAndBelongsToMany do
|
|
|
129
130
|
end
|
|
130
131
|
end
|
|
131
132
|
end
|
|
133
|
+
|
|
134
|
+
context "when all the values for the has_and_belongs_to_many association are empty" do
|
|
135
|
+
|
|
136
|
+
before do
|
|
137
|
+
2.times { |i| HabtmmPerson.create! }
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
it "only queries once for the parent documents" do
|
|
141
|
+
found_person = false
|
|
142
|
+
expect_query(1) do
|
|
143
|
+
HabtmmPerson.all.includes(:tickets).each do |person|
|
|
144
|
+
expect(person.tickets).to eq []
|
|
145
|
+
found_person = true
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
expect(found_person).to be true
|
|
149
|
+
end
|
|
150
|
+
end
|
|
132
151
|
end
|
|
133
152
|
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "spec_helper"
|
|
4
|
+
require_relative '../has_and_belongs_to_many_models'
|
|
5
|
+
|
|
6
|
+
describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
7
|
+
context 'with primary_key and foreign_key given' do
|
|
8
|
+
let(:company) { HabtmmCompany.create!(c_id: 123) }
|
|
9
|
+
let(:employee) { HabtmmEmployee.create!(e_id: 456) }
|
|
10
|
+
|
|
11
|
+
before do
|
|
12
|
+
company.employees << employee
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it 'references correct field' do
|
|
16
|
+
expect(company.e_ids).to eq([456])
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe 'nullify' do
|
|
20
|
+
before do
|
|
21
|
+
company.employees << repl_employee
|
|
22
|
+
company.save!
|
|
23
|
+
expect(company.employees.length).to eq(2)
|
|
24
|
+
repl_employee.habtmm_company_ids = [company.id]
|
|
25
|
+
repl_employee.save!
|
|
26
|
+
repl_employee.reload
|
|
27
|
+
expect(repl_employee.habtmm_company_ids).to eq([company.id])
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
context 'without replacement' do
|
|
31
|
+
let(:repl_employee) { HabtmmEmployee.create!(e_id: 444) }
|
|
32
|
+
|
|
33
|
+
it 'disassociates child from parent' do
|
|
34
|
+
company.employees.nullify
|
|
35
|
+
repl_employee.reload
|
|
36
|
+
expect(repl_employee.habtmm_company_ids).to eq([])
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
context 'with replacement' do
|
|
41
|
+
let(:repl_employee) { HabtmmEmployee.create!(e_id: 444) }
|
|
42
|
+
|
|
43
|
+
before do
|
|
44
|
+
company.employees << repl_employee
|
|
45
|
+
expect(company.employees.length).to eq(2)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it 'keeps replacement associated with the parent' do
|
|
49
|
+
company.employees.nullify([repl_employee])
|
|
50
|
+
repl_employee.reload
|
|
51
|
+
expect(repl_employee.habtmm_company_ids).to eq([company.id])
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
require "spec_helper"
|
|
2
2
|
|
|
3
|
-
describe Mongoid::
|
|
3
|
+
describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
around(:each) do |example|
|
|
6
|
+
original_raise_not_found_error = Mongoid.raise_not_found_error
|
|
7
|
+
original_preferences_association = Person.relations["preferences"]
|
|
6
8
|
Mongoid.raise_not_found_error = true
|
|
7
|
-
Person.
|
|
8
|
-
|
|
9
|
+
Person.has_and_belongs_to_many :preferences, autosave: true
|
|
10
|
+
example.run
|
|
11
|
+
Mongoid.raise_not_found_error = original_raise_not_found_error
|
|
12
|
+
Person.relations["preferences"] = original_preferences_association
|
|
9
13
|
end
|
|
10
14
|
|
|
11
15
|
after(:all) do
|
|
@@ -814,6 +818,82 @@ describe Mongoid::Relations::Referenced::ManyToMany do
|
|
|
814
818
|
end
|
|
815
819
|
end
|
|
816
820
|
|
|
821
|
+
describe "when self-referencing" do
|
|
822
|
+
let!(:parent) do
|
|
823
|
+
Vertex.create
|
|
824
|
+
end
|
|
825
|
+
|
|
826
|
+
let!(:child) do
|
|
827
|
+
Vertex.create(parents: [parent])
|
|
828
|
+
end
|
|
829
|
+
|
|
830
|
+
before do
|
|
831
|
+
parent.reload
|
|
832
|
+
child.reload
|
|
833
|
+
end
|
|
834
|
+
|
|
835
|
+
it "sets the parent" do
|
|
836
|
+
expect(child.parents).to include(parent)
|
|
837
|
+
end
|
|
838
|
+
|
|
839
|
+
it "sets the parent id" do
|
|
840
|
+
expect(child.parent_ids).to include(parent.id)
|
|
841
|
+
end
|
|
842
|
+
|
|
843
|
+
it "sets the child" do
|
|
844
|
+
expect(parent.children).to include(child)
|
|
845
|
+
end
|
|
846
|
+
|
|
847
|
+
it "sets the child id" do
|
|
848
|
+
expect(parent.child_ids).to include(child.id)
|
|
849
|
+
end
|
|
850
|
+
|
|
851
|
+
describe "#update" do
|
|
852
|
+
before do
|
|
853
|
+
child.update(parents: [parent])
|
|
854
|
+
end
|
|
855
|
+
|
|
856
|
+
it "sets the parent" do
|
|
857
|
+
expect(child.parents).to include(parent)
|
|
858
|
+
end
|
|
859
|
+
|
|
860
|
+
it "sets the parent id" do
|
|
861
|
+
expect(child.parent_ids).to include(parent.id)
|
|
862
|
+
end
|
|
863
|
+
|
|
864
|
+
it "sets the child" do
|
|
865
|
+
expect(parent.children).to include(child)
|
|
866
|
+
end
|
|
867
|
+
|
|
868
|
+
it "sets the child id" do
|
|
869
|
+
expect(parent.child_ids).to include(child.id)
|
|
870
|
+
end
|
|
871
|
+
|
|
872
|
+
describe "when reloading" do
|
|
873
|
+
before do
|
|
874
|
+
parent.reload
|
|
875
|
+
child.reload
|
|
876
|
+
end
|
|
877
|
+
|
|
878
|
+
it "sets the parent" do
|
|
879
|
+
expect(child.parents).to include(parent)
|
|
880
|
+
end
|
|
881
|
+
|
|
882
|
+
it "sets the parent id" do
|
|
883
|
+
expect(child.parent_ids).to include(parent.id)
|
|
884
|
+
end
|
|
885
|
+
|
|
886
|
+
it "sets the child" do
|
|
887
|
+
expect(parent.children).to include(child)
|
|
888
|
+
end
|
|
889
|
+
|
|
890
|
+
it "sets the child id" do
|
|
891
|
+
expect(parent.child_ids).to include(child.id)
|
|
892
|
+
end
|
|
893
|
+
end
|
|
894
|
+
end
|
|
895
|
+
end
|
|
896
|
+
|
|
817
897
|
[ nil, [] ].each do |value|
|
|
818
898
|
|
|
819
899
|
describe "#= #{value}" do
|
|
@@ -1041,27 +1121,6 @@ describe Mongoid::Relations::Referenced::ManyToMany do
|
|
|
1041
1121
|
end
|
|
1042
1122
|
end
|
|
1043
1123
|
|
|
1044
|
-
describe ".builder" do
|
|
1045
|
-
|
|
1046
|
-
let(:builder_klass) do
|
|
1047
|
-
Mongoid::Relations::Builders::Referenced::ManyToMany
|
|
1048
|
-
end
|
|
1049
|
-
|
|
1050
|
-
let(:document) do
|
|
1051
|
-
double
|
|
1052
|
-
end
|
|
1053
|
-
|
|
1054
|
-
let(:metadata) do
|
|
1055
|
-
double(extension?: false)
|
|
1056
|
-
end
|
|
1057
|
-
|
|
1058
|
-
it "returns the embedded in builder" do
|
|
1059
|
-
expect(
|
|
1060
|
-
described_class.builder(nil, metadata, document)
|
|
1061
|
-
).to be_a_kind_of(builder_klass)
|
|
1062
|
-
end
|
|
1063
|
-
end
|
|
1064
|
-
|
|
1065
1124
|
describe "#clear" do
|
|
1066
1125
|
|
|
1067
1126
|
context "when the relation is not polymorphic" do
|
|
@@ -2175,8 +2234,8 @@ describe Mongoid::Relations::Referenced::ManyToMany do
|
|
|
2175
2234
|
|
|
2176
2235
|
let!(:deleted) do
|
|
2177
2236
|
person.preferences.send(
|
|
2178
|
-
|
|
2179
|
-
|
|
2237
|
+
method,
|
|
2238
|
+
{ name: "Testing" }
|
|
2180
2239
|
)
|
|
2181
2240
|
end
|
|
2182
2241
|
|
|
@@ -2365,7 +2424,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do
|
|
|
2365
2424
|
|
|
2366
2425
|
let(:preferences) do
|
|
2367
2426
|
person.preferences.find(
|
|
2368
|
-
|
|
2427
|
+
[ unrelated_pref.id, unrelated_pref_two.id ]
|
|
2369
2428
|
)
|
|
2370
2429
|
end
|
|
2371
2430
|
|
|
@@ -2543,20 +2602,6 @@ describe Mongoid::Relations::Referenced::ManyToMany do
|
|
|
2543
2602
|
end
|
|
2544
2603
|
end
|
|
2545
2604
|
|
|
2546
|
-
describe ".foreign_key_suffix" do
|
|
2547
|
-
|
|
2548
|
-
it "returns _ids" do
|
|
2549
|
-
expect(described_class.foreign_key_suffix).to eq("_ids")
|
|
2550
|
-
end
|
|
2551
|
-
end
|
|
2552
|
-
|
|
2553
|
-
describe ".macro" do
|
|
2554
|
-
|
|
2555
|
-
it "returns has_and_belongs_to_many" do
|
|
2556
|
-
expect(described_class.macro).to eq(:has_and_belongs_to_many)
|
|
2557
|
-
end
|
|
2558
|
-
end
|
|
2559
|
-
|
|
2560
2605
|
describe "#max" do
|
|
2561
2606
|
|
|
2562
2607
|
let(:person) do
|
|
@@ -2843,7 +2888,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do
|
|
|
2843
2888
|
end
|
|
2844
2889
|
end
|
|
2845
2890
|
|
|
2846
|
-
Mongoid::
|
|
2891
|
+
Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy.public_instance_methods.each do |method|
|
|
2847
2892
|
|
|
2848
2893
|
context "when checking #{method}" do
|
|
2849
2894
|
|
|
@@ -2864,13 +2909,6 @@ describe Mongoid::Relations::Referenced::ManyToMany do
|
|
|
2864
2909
|
end
|
|
2865
2910
|
end
|
|
2866
2911
|
|
|
2867
|
-
describe ".stores_foreign_key?" do
|
|
2868
|
-
|
|
2869
|
-
it "returns true" do
|
|
2870
|
-
expect(described_class.stores_foreign_key?).to be true
|
|
2871
|
-
end
|
|
2872
|
-
end
|
|
2873
|
-
|
|
2874
2912
|
describe "#scoped" do
|
|
2875
2913
|
|
|
2876
2914
|
let(:person) do
|
|
@@ -2976,33 +3014,6 @@ describe Mongoid::Relations::Referenced::ManyToMany do
|
|
|
2976
3014
|
end
|
|
2977
3015
|
end
|
|
2978
3016
|
|
|
2979
|
-
describe ".valid_options" do
|
|
2980
|
-
|
|
2981
|
-
it "returns the valid options" do
|
|
2982
|
-
expect(described_class.valid_options).to eq(
|
|
2983
|
-
[
|
|
2984
|
-
:after_add,
|
|
2985
|
-
:after_remove,
|
|
2986
|
-
:autosave,
|
|
2987
|
-
:before_add,
|
|
2988
|
-
:before_remove,
|
|
2989
|
-
:dependent,
|
|
2990
|
-
:foreign_key,
|
|
2991
|
-
:index,
|
|
2992
|
-
:order,
|
|
2993
|
-
:primary_key
|
|
2994
|
-
]
|
|
2995
|
-
)
|
|
2996
|
-
end
|
|
2997
|
-
end
|
|
2998
|
-
|
|
2999
|
-
describe ".validation_default" do
|
|
3000
|
-
|
|
3001
|
-
it "returns true" do
|
|
3002
|
-
expect(described_class.validation_default).to be true
|
|
3003
|
-
end
|
|
3004
|
-
end
|
|
3005
|
-
|
|
3006
3017
|
context "when setting the ids directly after the documents" do
|
|
3007
3018
|
|
|
3008
3019
|
let!(:person) do
|
|
@@ -3023,7 +3034,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do
|
|
|
3023
3034
|
|
|
3024
3035
|
before do
|
|
3025
3036
|
person.update_attributes(
|
|
3026
|
-
|
|
3037
|
+
houses: [ wife_house, exwife_house, girlfriend_house ]
|
|
3027
3038
|
)
|
|
3028
3039
|
person.update_attributes(house_ids: [ girlfriend_house.id ])
|
|
3029
3040
|
end
|
|
@@ -3208,14 +3219,14 @@ describe Mongoid::Relations::Referenced::ManyToMany do
|
|
|
3208
3219
|
|
|
3209
3220
|
it "orders the documents" do
|
|
3210
3221
|
expect(person.ordered_preferences(true)).to eq(
|
|
3211
|
-
|
|
3212
|
-
|
|
3222
|
+
[preference_two, preference_three, preference_one]
|
|
3223
|
+
)
|
|
3213
3224
|
end
|
|
3214
3225
|
|
|
3215
3226
|
it "chains default criteria with additional" do
|
|
3216
3227
|
expect(person.ordered_preferences.order_by(:name.desc).to_a).to eq(
|
|
3217
|
-
|
|
3218
|
-
|
|
3228
|
+
[preference_three, preference_two, preference_one]
|
|
3229
|
+
)
|
|
3219
3230
|
end
|
|
3220
3231
|
end
|
|
3221
3232
|
|
|
@@ -3273,7 +3284,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do
|
|
|
3273
3284
|
|
|
3274
3285
|
before do
|
|
3275
3286
|
Preference.collection.find({ _id: preference_one.id }).
|
|
3276
|
-
|
|
3287
|
+
update_one({ "$set" => { name: "reloaded" }})
|
|
3277
3288
|
end
|
|
3278
3289
|
|
|
3279
3290
|
let(:reloaded) do
|
|
@@ -3367,8 +3378,8 @@ describe Mongoid::Relations::Referenced::ManyToMany do
|
|
|
3367
3378
|
|
|
3368
3379
|
it "persists the change in id order" do
|
|
3369
3380
|
expect(reloaded.preference_ids).to eq(
|
|
3370
|
-
|
|
3371
|
-
|
|
3381
|
+
[ preference_two.id, preference_one.id ]
|
|
3382
|
+
)
|
|
3372
3383
|
end
|
|
3373
3384
|
end
|
|
3374
3385
|
|
|
@@ -3380,7 +3391,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do
|
|
|
3380
3391
|
|
|
3381
3392
|
before do
|
|
3382
3393
|
person.preference_ids =
|
|
3383
|
-
|
|
3394
|
+
[ preference_two.id, preference_one.id, preference_three.id ]
|
|
3384
3395
|
person.save
|
|
3385
3396
|
end
|
|
3386
3397
|
|
|
@@ -3390,8 +3401,8 @@ describe Mongoid::Relations::Referenced::ManyToMany do
|
|
|
3390
3401
|
|
|
3391
3402
|
it "also persists the change in id order" do
|
|
3392
3403
|
expect(reloaded.preference_ids).to eq(
|
|
3393
|
-
|
|
3394
|
-
|
|
3404
|
+
[ preference_two.id, preference_one.id, preference_three.id ]
|
|
3405
|
+
)
|
|
3395
3406
|
end
|
|
3396
3407
|
end
|
|
3397
3408
|
|
|
@@ -3403,10 +3414,10 @@ describe Mongoid::Relations::Referenced::ManyToMany do
|
|
|
3403
3414
|
|
|
3404
3415
|
before do
|
|
3405
3416
|
person.preference_ids =
|
|
3406
|
-
|
|
3417
|
+
[ preference_one.id, preference_two.id, preference_three.id ]
|
|
3407
3418
|
person.save
|
|
3408
3419
|
person.preference_ids =
|
|
3409
|
-
|
|
3420
|
+
[ preference_three.id, preference_two.id ]
|
|
3410
3421
|
person.save
|
|
3411
3422
|
end
|
|
3412
3423
|
|
|
@@ -3416,8 +3427,8 @@ describe Mongoid::Relations::Referenced::ManyToMany do
|
|
|
3416
3427
|
|
|
3417
3428
|
it "also persists the change in id order" do
|
|
3418
3429
|
expect(reloaded.preference_ids).to eq(
|
|
3419
|
-
|
|
3420
|
-
|
|
3430
|
+
[ preference_three.id, preference_two.id ]
|
|
3431
|
+
)
|
|
3421
3432
|
end
|
|
3422
3433
|
end
|
|
3423
3434
|
end
|
|
@@ -3543,9 +3554,8 @@ describe Mongoid::Relations::Referenced::ManyToMany do
|
|
|
3543
3554
|
field :n, type: String, as: :name
|
|
3544
3555
|
|
|
3545
3556
|
has_and_belongs_to_many :distributors,
|
|
3546
|
-
|
|
3547
|
-
|
|
3548
|
-
inverse_class_name: 'Distributor'
|
|
3557
|
+
foreign_key: :d_ids,
|
|
3558
|
+
inverse_of: 'p'
|
|
3549
3559
|
end
|
|
3550
3560
|
|
|
3551
3561
|
class Distributor
|
|
@@ -3554,9 +3564,8 @@ describe Mongoid::Relations::Referenced::ManyToMany do
|
|
|
3554
3564
|
field :n, type: String, as: :name
|
|
3555
3565
|
|
|
3556
3566
|
has_and_belongs_to_many :projects,
|
|
3557
|
-
|
|
3558
|
-
|
|
3559
|
-
inverse_class_name: 'Project'
|
|
3567
|
+
foreign_key: :p_ids,
|
|
3568
|
+
inverse_of: 'd'
|
|
3560
3569
|
end
|
|
3561
3570
|
end
|
|
3562
3571
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
class HabtmmCompany
|
|
2
|
+
include Mongoid::Document
|
|
3
|
+
|
|
4
|
+
field :c_id, type: Integer
|
|
5
|
+
field :e_ids, type: Array
|
|
6
|
+
has_and_belongs_to_many :employees, primary_key: :e_id, foreign_key: :e_ids, class_name: 'HabtmmEmployee'
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
class HabtmmEmployee
|
|
10
|
+
include Mongoid::Document
|
|
11
|
+
|
|
12
|
+
field :e_id, type: Integer
|
|
13
|
+
field :c_ids, type: Array
|
|
14
|
+
field :habtmm_company_ids, type: Array
|
|
15
|
+
has_and_belongs_to_many :companies, primary_key: :c_id, foreign_key: :c_ids, class_name: 'HabtmmCompany'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
class HabtmmTicket
|
|
19
|
+
include Mongoid::Document
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
class HabtmmPerson
|
|
23
|
+
include Mongoid::Document
|
|
24
|
+
|
|
25
|
+
has_and_belongs_to_many :tickets, class_name: 'HabtmmTicket'
|
|
26
|
+
end
|