mongoid 7.0.13 → 7.1.0.rc0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (860) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/CHANGELOG.md +7 -7
  5. data/LICENSE +1 -1
  6. data/README.md +24 -18
  7. data/Rakefile +7 -45
  8. data/lib/config/locales/en.yml +56 -47
  9. data/lib/mongoid.rb +8 -1
  10. data/lib/mongoid/association.rb +9 -6
  11. data/lib/mongoid/association/accessors.rb +95 -52
  12. data/lib/mongoid/association/bindable.rb +7 -5
  13. data/lib/mongoid/association/builders.rb +4 -3
  14. data/lib/mongoid/association/constrainable.rb +4 -2
  15. data/lib/mongoid/association/depending.rb +5 -2
  16. data/lib/mongoid/association/eager_loadable.rb +2 -0
  17. data/lib/mongoid/association/embedded.rb +3 -0
  18. data/lib/mongoid/association/embedded/batchable.rb +4 -2
  19. data/lib/mongoid/association/embedded/cyclic.rb +8 -6
  20. data/lib/mongoid/association/embedded/embedded_in.rb +6 -3
  21. data/lib/mongoid/association/embedded/embedded_in/binding.rb +4 -1
  22. data/lib/mongoid/association/embedded/embedded_in/buildable.rb +8 -2
  23. data/lib/mongoid/association/embedded/embedded_in/proxy.rb +15 -12
  24. data/lib/mongoid/association/embedded/embeds_many.rb +8 -6
  25. data/lib/mongoid/association/embedded/embeds_many/binding.rb +5 -2
  26. data/lib/mongoid/association/embedded/embeds_many/buildable.rb +9 -3
  27. data/lib/mongoid/association/embedded/embeds_many/proxy.rb +41 -38
  28. data/lib/mongoid/association/embedded/embeds_one.rb +8 -6
  29. data/lib/mongoid/association/embedded/embeds_one/binding.rb +5 -2
  30. data/lib/mongoid/association/embedded/embeds_one/buildable.rb +10 -4
  31. data/lib/mongoid/association/embedded/embeds_one/proxy.rb +17 -14
  32. data/lib/mongoid/association/macros.rb +38 -36
  33. data/lib/mongoid/association/many.rb +11 -9
  34. data/lib/mongoid/association/marshalable.rb +3 -1
  35. data/lib/mongoid/association/nested.rb +4 -1
  36. data/lib/mongoid/association/nested/many.rb +17 -15
  37. data/lib/mongoid/association/nested/nested_buildable.rb +6 -3
  38. data/lib/mongoid/association/nested/one.rb +11 -9
  39. data/lib/mongoid/association/one.rb +3 -1
  40. data/lib/mongoid/association/options.rb +9 -6
  41. data/lib/mongoid/association/proxy.rb +12 -10
  42. data/lib/mongoid/association/referenced.rb +3 -0
  43. data/lib/mongoid/association/referenced/auto_save.rb +4 -1
  44. data/lib/mongoid/association/referenced/belongs_to.rb +6 -3
  45. data/lib/mongoid/association/referenced/belongs_to/binding.rb +3 -1
  46. data/lib/mongoid/association/referenced/belongs_to/buildable.rb +6 -3
  47. data/lib/mongoid/association/referenced/belongs_to/eager.rb +2 -0
  48. data/lib/mongoid/association/referenced/belongs_to/proxy.rb +16 -14
  49. data/lib/mongoid/association/referenced/counter_cache.rb +2 -0
  50. data/lib/mongoid/association/referenced/eager.rb +9 -7
  51. data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +13 -6
  52. data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +12 -6
  53. data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +5 -2
  54. data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +2 -0
  55. data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +25 -18
  56. data/lib/mongoid/association/referenced/has_many.rb +7 -4
  57. data/lib/mongoid/association/referenced/has_many/binding.rb +3 -1
  58. data/lib/mongoid/association/referenced/has_many/buildable.rb +5 -2
  59. data/lib/mongoid/association/referenced/has_many/eager.rb +2 -0
  60. data/lib/mongoid/association/referenced/has_many/enumerable.rb +30 -3
  61. data/lib/mongoid/association/referenced/has_many/proxy.rb +43 -41
  62. data/lib/mongoid/association/referenced/has_one.rb +5 -2
  63. data/lib/mongoid/association/referenced/has_one/binding.rb +4 -2
  64. data/lib/mongoid/association/referenced/has_one/buildable.rb +8 -1
  65. data/lib/mongoid/association/referenced/has_one/eager.rb +2 -0
  66. data/lib/mongoid/association/referenced/has_one/nested_builder.rb +11 -9
  67. data/lib/mongoid/association/referenced/has_one/proxy.rb +17 -15
  68. data/lib/mongoid/association/referenced/syncable.rb +7 -5
  69. data/lib/mongoid/association/reflections.rb +7 -5
  70. data/lib/mongoid/association/relatable.rb +17 -14
  71. data/lib/mongoid/atomic.rb +5 -13
  72. data/lib/mongoid/atomic/modifiers.rb +24 -1
  73. data/lib/mongoid/atomic/paths.rb +2 -0
  74. data/lib/mongoid/atomic/paths/embedded.rb +2 -0
  75. data/lib/mongoid/atomic/paths/embedded/many.rb +4 -2
  76. data/lib/mongoid/atomic/paths/embedded/one.rb +4 -2
  77. data/lib/mongoid/atomic/paths/root.rb +4 -2
  78. data/lib/mongoid/attributes.rb +35 -49
  79. data/lib/mongoid/attributes/dynamic.rb +2 -0
  80. data/lib/mongoid/attributes/nested.rb +7 -5
  81. data/lib/mongoid/attributes/processing.rb +8 -6
  82. data/lib/mongoid/attributes/readonly.rb +3 -1
  83. data/lib/mongoid/cacheable.rb +3 -1
  84. data/lib/mongoid/changeable.rb +3 -1
  85. data/lib/mongoid/clients.rb +2 -0
  86. data/lib/mongoid/clients/factory.rb +1 -0
  87. data/lib/mongoid/clients/options.rb +2 -0
  88. data/lib/mongoid/clients/sessions.rb +7 -20
  89. data/lib/mongoid/clients/storage_options.rb +2 -0
  90. data/lib/mongoid/clients/validators.rb +2 -0
  91. data/lib/mongoid/clients/validators/storage.rb +2 -0
  92. data/lib/mongoid/composable.rb +4 -2
  93. data/lib/mongoid/config.rb +15 -2
  94. data/lib/mongoid/config/environment.rb +2 -0
  95. data/lib/mongoid/config/options.rb +17 -12
  96. data/lib/mongoid/config/validators.rb +2 -0
  97. data/lib/mongoid/config/validators/client.rb +2 -0
  98. data/lib/mongoid/config/validators/option.rb +2 -0
  99. data/lib/mongoid/contextual.rb +2 -0
  100. data/lib/mongoid/contextual/aggregable/memory.rb +3 -1
  101. data/lib/mongoid/contextual/aggregable/mongo.rb +3 -1
  102. data/lib/mongoid/contextual/atomic.rb +24 -6
  103. data/lib/mongoid/contextual/command.rb +2 -0
  104. data/lib/mongoid/contextual/geo_near.rb +2 -1
  105. data/lib/mongoid/contextual/map_reduce.rb +2 -0
  106. data/lib/mongoid/contextual/memory.rb +4 -2
  107. data/lib/mongoid/contextual/mongo.rb +4 -0
  108. data/lib/mongoid/contextual/none.rb +2 -0
  109. data/lib/mongoid/contextual/queryable.rb +2 -0
  110. data/lib/mongoid/copyable.rb +3 -1
  111. data/lib/mongoid/criteria.rb +3 -7
  112. data/lib/mongoid/criteria/findable.rb +11 -1
  113. data/lib/mongoid/criteria/includable.rb +8 -6
  114. data/lib/mongoid/criteria/inspectable.rb +2 -0
  115. data/lib/mongoid/criteria/marshalable.rb +2 -0
  116. data/lib/mongoid/criteria/modifiable.rb +3 -2
  117. data/lib/mongoid/criteria/options.rb +2 -0
  118. data/lib/mongoid/criteria/permission.rb +2 -0
  119. data/lib/mongoid/criteria/queryable.rb +7 -2
  120. data/lib/mongoid/criteria/queryable/aggregable.rb +2 -0
  121. data/lib/mongoid/criteria/queryable/expandable.rb +93 -0
  122. data/lib/mongoid/criteria/queryable/extensions.rb +2 -0
  123. data/lib/mongoid/criteria/queryable/extensions/array.rb +3 -1
  124. data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +3 -1
  125. data/lib/mongoid/criteria/queryable/extensions/boolean.rb +2 -0
  126. data/lib/mongoid/criteria/queryable/extensions/date.rb +3 -1
  127. data/lib/mongoid/criteria/queryable/extensions/date_time.rb +5 -6
  128. data/lib/mongoid/criteria/queryable/extensions/hash.rb +3 -1
  129. data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +3 -1
  130. data/lib/mongoid/criteria/queryable/extensions/numeric.rb +4 -2
  131. data/lib/mongoid/criteria/queryable/extensions/object.rb +3 -1
  132. data/lib/mongoid/criteria/queryable/extensions/range.rb +3 -1
  133. data/lib/mongoid/criteria/queryable/extensions/regexp.rb +7 -5
  134. data/lib/mongoid/criteria/queryable/extensions/set.rb +3 -1
  135. data/lib/mongoid/criteria/queryable/extensions/string.rb +3 -1
  136. data/lib/mongoid/criteria/queryable/extensions/symbol.rb +3 -1
  137. data/lib/mongoid/criteria/queryable/extensions/time.rb +3 -1
  138. data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +3 -13
  139. data/lib/mongoid/criteria/queryable/key.rb +34 -6
  140. data/lib/mongoid/criteria/queryable/macroable.rb +3 -1
  141. data/lib/mongoid/criteria/queryable/mergeable.rb +86 -11
  142. data/lib/mongoid/criteria/queryable/optional.rb +5 -3
  143. data/lib/mongoid/criteria/queryable/options.rb +2 -0
  144. data/lib/mongoid/criteria/queryable/pipeline.rb +2 -0
  145. data/lib/mongoid/criteria/queryable/selectable.rb +264 -87
  146. data/lib/mongoid/criteria/queryable/selector.rb +38 -5
  147. data/lib/mongoid/criteria/queryable/smash.rb +2 -0
  148. data/lib/mongoid/criteria/queryable/storable.rb +228 -0
  149. data/lib/mongoid/criteria/scopable.rb +2 -0
  150. data/lib/mongoid/document.rb +4 -3
  151. data/lib/mongoid/equality.rb +3 -2
  152. data/lib/mongoid/errors.rb +3 -0
  153. data/lib/mongoid/errors/ambiguous_relationship.rb +4 -2
  154. data/lib/mongoid/errors/callback.rb +2 -0
  155. data/lib/mongoid/errors/criteria_argument_required.rb +19 -0
  156. data/lib/mongoid/errors/delete_restriction.rb +3 -2
  157. data/lib/mongoid/errors/document_not_destroyed.rb +2 -0
  158. data/lib/mongoid/errors/document_not_found.rb +2 -0
  159. data/lib/mongoid/errors/eager_load.rb +4 -2
  160. data/lib/mongoid/errors/in_memory_collation_not_supported.rb +2 -0
  161. data/lib/mongoid/errors/invalid_collection.rb +2 -0
  162. data/lib/mongoid/errors/invalid_config_option.rb +2 -0
  163. data/lib/mongoid/errors/invalid_dependent_strategy.rb +2 -0
  164. data/lib/mongoid/errors/invalid_field.rb +2 -0
  165. data/lib/mongoid/errors/invalid_field_option.rb +2 -0
  166. data/lib/mongoid/errors/invalid_find.rb +2 -0
  167. data/lib/mongoid/errors/invalid_includes.rb +2 -0
  168. data/lib/mongoid/errors/invalid_index.rb +2 -0
  169. data/lib/mongoid/errors/invalid_options.rb +4 -2
  170. data/lib/mongoid/errors/invalid_path.rb +2 -0
  171. data/lib/mongoid/errors/invalid_persistence_option.rb +2 -0
  172. data/lib/mongoid/errors/invalid_relation.rb +4 -2
  173. data/lib/mongoid/errors/invalid_relation_option.rb +4 -2
  174. data/lib/mongoid/errors/invalid_scope.rb +2 -0
  175. data/lib/mongoid/errors/invalid_session_use.rb +2 -0
  176. data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +6 -4
  177. data/lib/mongoid/errors/invalid_storage_options.rb +2 -0
  178. data/lib/mongoid/errors/invalid_storage_parent.rb +2 -0
  179. data/lib/mongoid/errors/invalid_time.rb +2 -0
  180. data/lib/mongoid/errors/invalid_value.rb +2 -0
  181. data/lib/mongoid/errors/inverse_not_found.rb +3 -1
  182. data/lib/mongoid/errors/mixed_client_configuration.rb +2 -0
  183. data/lib/mongoid/errors/mixed_relations.rb +2 -0
  184. data/lib/mongoid/errors/mongoid_error.rb +2 -0
  185. data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +3 -1
  186. data/lib/mongoid/errors/no_client_config.rb +2 -0
  187. data/lib/mongoid/errors/no_client_database.rb +2 -0
  188. data/lib/mongoid/errors/no_client_hosts.rb +2 -0
  189. data/lib/mongoid/errors/no_clients_config.rb +2 -0
  190. data/lib/mongoid/errors/no_default_client.rb +2 -0
  191. data/lib/mongoid/errors/no_environment.rb +2 -0
  192. data/lib/mongoid/errors/no_map_reduce_output.rb +2 -0
  193. data/lib/mongoid/errors/no_metadata.rb +2 -0
  194. data/lib/mongoid/errors/no_parent.rb +2 -0
  195. data/lib/mongoid/errors/readonly_attribute.rb +2 -0
  196. data/lib/mongoid/errors/readonly_document.rb +2 -0
  197. data/lib/mongoid/errors/scope_overwrite.rb +2 -0
  198. data/lib/mongoid/errors/too_many_nested_attribute_records.rb +3 -0
  199. data/lib/mongoid/errors/unknown_attribute.rb +2 -0
  200. data/lib/mongoid/errors/unknown_model.rb +2 -0
  201. data/lib/mongoid/errors/unsaved_document.rb +2 -0
  202. data/lib/mongoid/errors/unsupported_javascript.rb +2 -0
  203. data/lib/mongoid/errors/validations.rb +2 -0
  204. data/lib/mongoid/evolvable.rb +3 -1
  205. data/lib/mongoid/extensions.rb +2 -0
  206. data/lib/mongoid/extensions/array.rb +23 -6
  207. data/lib/mongoid/extensions/big_decimal.rb +2 -0
  208. data/lib/mongoid/extensions/boolean.rb +2 -0
  209. data/lib/mongoid/extensions/date.rb +13 -3
  210. data/lib/mongoid/extensions/date_time.rb +4 -3
  211. data/lib/mongoid/extensions/decimal128.rb +2 -0
  212. data/lib/mongoid/extensions/false_class.rb +2 -0
  213. data/lib/mongoid/extensions/float.rb +5 -3
  214. data/lib/mongoid/extensions/hash.rb +49 -11
  215. data/lib/mongoid/extensions/integer.rb +5 -3
  216. data/lib/mongoid/extensions/module.rb +2 -0
  217. data/lib/mongoid/extensions/nil_class.rb +2 -0
  218. data/lib/mongoid/extensions/object.rb +16 -4
  219. data/lib/mongoid/extensions/object_id.rb +2 -0
  220. data/lib/mongoid/extensions/range.rb +2 -0
  221. data/lib/mongoid/extensions/regexp.rb +3 -1
  222. data/lib/mongoid/extensions/set.rb +2 -0
  223. data/lib/mongoid/extensions/string.rb +18 -9
  224. data/lib/mongoid/extensions/symbol.rb +2 -0
  225. data/lib/mongoid/extensions/time.rb +14 -0
  226. data/lib/mongoid/extensions/time_with_zone.rb +14 -0
  227. data/lib/mongoid/extensions/true_class.rb +2 -0
  228. data/lib/mongoid/factory.rb +28 -5
  229. data/lib/mongoid/fields.rb +4 -3
  230. data/lib/mongoid/fields/foreign_key.rb +3 -1
  231. data/lib/mongoid/fields/localized.rb +2 -0
  232. data/lib/mongoid/fields/standard.rb +4 -2
  233. data/lib/mongoid/fields/validators.rb +2 -0
  234. data/lib/mongoid/fields/validators/macro.rb +13 -2
  235. data/lib/mongoid/findable.rb +6 -2
  236. data/lib/mongoid/indexable.rb +3 -1
  237. data/lib/mongoid/indexable/specification.rb +3 -1
  238. data/lib/mongoid/indexable/validators/options.rb +2 -0
  239. data/lib/mongoid/inspectable.rb +3 -1
  240. data/lib/mongoid/interceptable.rb +5 -5
  241. data/lib/mongoid/loggable.rb +13 -7
  242. data/lib/mongoid/matchable.rb +2 -0
  243. data/lib/mongoid/matchable/all.rb +2 -0
  244. data/lib/mongoid/matchable/and.rb +2 -0
  245. data/lib/mongoid/matchable/default.rb +2 -0
  246. data/lib/mongoid/matchable/elem_match.rb +2 -0
  247. data/lib/mongoid/matchable/eq.rb +1 -0
  248. data/lib/mongoid/matchable/exists.rb +2 -0
  249. data/lib/mongoid/matchable/gt.rb +2 -0
  250. data/lib/mongoid/matchable/gte.rb +2 -0
  251. data/lib/mongoid/matchable/in.rb +2 -0
  252. data/lib/mongoid/matchable/lt.rb +2 -0
  253. data/lib/mongoid/matchable/lte.rb +2 -0
  254. data/lib/mongoid/matchable/ne.rb +2 -0
  255. data/lib/mongoid/matchable/nin.rb +2 -0
  256. data/lib/mongoid/matchable/nor.rb +2 -1
  257. data/lib/mongoid/matchable/or.rb +2 -0
  258. data/lib/mongoid/matchable/regexp.rb +5 -2
  259. data/lib/mongoid/matchable/size.rb +2 -0
  260. data/lib/mongoid/persistable.rb +133 -15
  261. data/lib/mongoid/persistable/creatable.rb +3 -1
  262. data/lib/mongoid/persistable/deletable.rb +3 -1
  263. data/lib/mongoid/persistable/destroyable.rb +3 -1
  264. data/lib/mongoid/persistable/incrementable.rb +6 -2
  265. data/lib/mongoid/persistable/logical.rb +4 -1
  266. data/lib/mongoid/persistable/poppable.rb +3 -1
  267. data/lib/mongoid/persistable/pullable.rb +3 -1
  268. data/lib/mongoid/persistable/pushable.rb +5 -12
  269. data/lib/mongoid/persistable/renamable.rb +10 -3
  270. data/lib/mongoid/persistable/savable.rb +3 -1
  271. data/lib/mongoid/persistable/settable.rb +3 -1
  272. data/lib/mongoid/persistable/unsettable.rb +8 -3
  273. data/lib/mongoid/persistable/updatable.rb +3 -1
  274. data/lib/mongoid/persistable/upsertable.rb +3 -1
  275. data/lib/mongoid/persistence_context.rb +27 -15
  276. data/lib/mongoid/positional.rb +2 -0
  277. data/lib/mongoid/query_cache.rb +26 -69
  278. data/lib/mongoid/railtie.rb +3 -1
  279. data/lib/mongoid/railties/controller_runtime.rb +4 -1
  280. data/lib/mongoid/railties/database.rake +2 -0
  281. data/lib/mongoid/reloadable.rb +4 -2
  282. data/lib/mongoid/scopable.rb +2 -1
  283. data/lib/mongoid/selectable.rb +3 -1
  284. data/lib/mongoid/serializable.rb +13 -11
  285. data/lib/mongoid/shardable.rb +3 -1
  286. data/lib/mongoid/stateful.rb +3 -1
  287. data/lib/mongoid/tasks/database.rake +2 -0
  288. data/lib/mongoid/tasks/database.rb +2 -0
  289. data/lib/mongoid/threaded.rb +2 -0
  290. data/lib/mongoid/threaded/lifecycle.rb +2 -0
  291. data/lib/mongoid/timestamps.rb +3 -1
  292. data/lib/mongoid/timestamps/created.rb +3 -1
  293. data/lib/mongoid/timestamps/created/short.rb +2 -0
  294. data/lib/mongoid/timestamps/short.rb +2 -0
  295. data/lib/mongoid/timestamps/timeless.rb +3 -1
  296. data/lib/mongoid/timestamps/updated.rb +3 -1
  297. data/lib/mongoid/timestamps/updated/short.rb +2 -0
  298. data/lib/mongoid/touchable.rb +20 -12
  299. data/lib/mongoid/traversable.rb +4 -2
  300. data/lib/mongoid/validatable.rb +7 -5
  301. data/lib/mongoid/validatable/associated.rb +4 -2
  302. data/lib/mongoid/validatable/format.rb +2 -0
  303. data/lib/mongoid/validatable/length.rb +2 -0
  304. data/lib/mongoid/validatable/localizable.rb +2 -0
  305. data/lib/mongoid/validatable/macros.rb +2 -0
  306. data/lib/mongoid/validatable/presence.rb +4 -2
  307. data/lib/mongoid/validatable/queryable.rb +2 -0
  308. data/lib/mongoid/validatable/uniqueness.rb +5 -3
  309. data/lib/mongoid/version.rb +2 -1
  310. data/lib/rails/generators/mongoid/config/config_generator.rb +3 -8
  311. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +12 -6
  312. data/lib/rails/generators/mongoid/model/model_generator.rb +3 -1
  313. data/lib/rails/generators/mongoid/model/templates/model.rb.tt +1 -1
  314. data/lib/rails/generators/mongoid_generator.rb +2 -0
  315. data/lib/rails/mongoid.rb +4 -2
  316. data/lib/support/ruby_version.rb +3 -0
  317. data/spec/app/models/account.rb +3 -0
  318. data/spec/app/models/acolyte.rb +3 -0
  319. data/spec/app/models/actor.rb +3 -0
  320. data/spec/app/models/actress.rb +3 -0
  321. data/spec/app/models/address.rb +3 -0
  322. data/spec/app/models/address_component.rb +3 -0
  323. data/spec/app/models/address_number.rb +3 -0
  324. data/spec/app/models/agency.rb +3 -0
  325. data/spec/app/models/agent.rb +3 -0
  326. data/spec/app/models/album.rb +3 -0
  327. data/spec/app/models/alert.rb +3 -0
  328. data/spec/app/models/animal.rb +3 -0
  329. data/spec/app/models/answer.rb +3 -0
  330. data/spec/app/models/appointment.rb +3 -0
  331. data/spec/app/models/array_field.rb +1 -0
  332. data/spec/app/models/article.rb +3 -0
  333. data/spec/app/models/artist.rb +3 -0
  334. data/spec/app/models/artwork.rb +3 -0
  335. data/spec/app/models/audio.rb +3 -0
  336. data/spec/app/models/augmentation.rb +3 -0
  337. data/spec/app/models/author.rb +3 -0
  338. data/spec/app/models/baby.rb +3 -0
  339. data/spec/app/models/band.rb +3 -0
  340. data/spec/app/models/bar.rb +3 -0
  341. data/spec/app/models/basic.rb +3 -0
  342. data/spec/app/models/bed.rb +3 -0
  343. data/spec/app/models/big_palette.rb +3 -0
  344. data/spec/app/models/birthday.rb +3 -0
  345. data/spec/app/models/bomb.rb +3 -0
  346. data/spec/app/models/book.rb +3 -0
  347. data/spec/app/models/breed.rb +3 -0
  348. data/spec/app/models/browser.rb +3 -0
  349. data/spec/app/models/building.rb +3 -0
  350. data/spec/app/models/building_address.rb +3 -0
  351. data/spec/app/models/bus.rb +3 -0
  352. data/spec/app/models/business.rb +3 -0
  353. data/spec/app/models/callback_test.rb +3 -0
  354. data/spec/app/models/canvas.rb +3 -0
  355. data/spec/app/models/car.rb +3 -0
  356. data/spec/app/models/cat.rb +3 -0
  357. data/spec/app/models/category.rb +3 -0
  358. data/spec/app/models/child.rb +3 -0
  359. data/spec/app/models/child_doc.rb +3 -0
  360. data/spec/app/models/church.rb +3 -0
  361. data/spec/app/models/circle.rb +3 -0
  362. data/spec/app/models/circuit.rb +3 -0
  363. data/spec/app/models/circus.rb +3 -0
  364. data/spec/app/models/code.rb +3 -0
  365. data/spec/app/models/comment.rb +3 -0
  366. data/spec/app/models/company.rb +3 -0
  367. data/spec/app/models/consumption_period.rb +3 -0
  368. data/spec/app/models/contextable_item.rb +3 -0
  369. data/spec/app/models/contractor.rb +3 -0
  370. data/spec/app/models/cookie.rb +3 -0
  371. data/spec/app/models/country_code.rb +3 -0
  372. data/spec/app/models/courier_job.rb +3 -0
  373. data/spec/app/models/definition.rb +3 -0
  374. data/spec/app/models/description.rb +3 -0
  375. data/spec/app/models/dictionary.rb +3 -0
  376. data/spec/app/models/division.rb +3 -0
  377. data/spec/app/models/doctor.rb +3 -0
  378. data/spec/app/models/dog.rb +3 -0
  379. data/spec/app/models/dokument.rb +3 -0
  380. data/spec/app/models/draft.rb +3 -0
  381. data/spec/app/models/dragon.rb +3 -0
  382. data/spec/app/models/driver.rb +3 -0
  383. data/spec/app/models/drug.rb +3 -0
  384. data/spec/app/models/dungeon.rb +3 -0
  385. data/spec/app/models/edit.rb +3 -0
  386. data/spec/app/models/email.rb +3 -0
  387. data/spec/app/models/employer.rb +3 -0
  388. data/spec/app/models/entry.rb +3 -0
  389. data/spec/app/models/eraser.rb +3 -0
  390. data/spec/app/models/even.rb +3 -0
  391. data/spec/app/models/event.rb +3 -0
  392. data/spec/app/models/exhibition.rb +3 -0
  393. data/spec/app/models/exhibitor.rb +3 -0
  394. data/spec/app/models/explosion.rb +3 -0
  395. data/spec/app/models/eye.rb +3 -0
  396. data/spec/app/models/eye_bowl.rb +3 -0
  397. data/spec/app/models/face.rb +3 -0
  398. data/spec/app/models/favorite.rb +3 -0
  399. data/spec/app/models/filesystem.rb +3 -0
  400. data/spec/app/models/fire_hydrant.rb +3 -0
  401. data/spec/app/models/firefox.rb +3 -0
  402. data/spec/app/models/fish.rb +3 -0
  403. data/spec/app/models/folder.rb +3 -0
  404. data/spec/app/models/folder_item.rb +3 -0
  405. data/spec/app/models/fruits.rb +3 -0
  406. data/spec/app/models/game.rb +3 -0
  407. data/spec/app/models/ghost.rb +3 -0
  408. data/spec/app/models/home.rb +3 -0
  409. data/spec/app/models/house.rb +3 -0
  410. data/spec/app/models/html_writer.rb +3 -0
  411. data/spec/app/models/id_key.rb +3 -0
  412. data/spec/app/models/image.rb +3 -0
  413. data/spec/app/models/implant.rb +3 -0
  414. data/spec/app/models/item.rb +3 -0
  415. data/spec/app/models/jar.rb +3 -0
  416. data/spec/app/models/kaleidoscope.rb +3 -0
  417. data/spec/app/models/kangaroo.rb +4 -1
  418. data/spec/app/models/label.rb +3 -0
  419. data/spec/app/models/language.rb +3 -0
  420. data/spec/app/models/lat_lng.rb +3 -0
  421. data/spec/app/models/league.rb +3 -0
  422. data/spec/app/models/learner.rb +3 -0
  423. data/spec/app/models/line_item.rb +3 -0
  424. data/spec/app/models/location.rb +3 -0
  425. data/spec/app/models/login.rb +3 -0
  426. data/spec/app/models/manufacturer.rb +3 -0
  427. data/spec/app/models/meat.rb +3 -0
  428. data/spec/app/models/membership.rb +3 -0
  429. data/spec/app/models/message.rb +3 -0
  430. data/spec/app/models/minim.rb +1 -1
  431. data/spec/app/models/mixed_drink.rb +3 -0
  432. data/spec/app/models/movie.rb +3 -0
  433. data/spec/app/models/my_hash.rb +3 -0
  434. data/spec/app/models/name.rb +3 -0
  435. data/spec/app/models/name_only.rb +9 -0
  436. data/spec/app/models/node.rb +3 -0
  437. data/spec/app/models/note.rb +3 -0
  438. data/spec/app/models/odd.rb +3 -0
  439. data/spec/app/models/ordered_post.rb +3 -0
  440. data/spec/app/models/ordered_preference.rb +3 -0
  441. data/spec/app/models/oscar.rb +3 -0
  442. data/spec/app/models/other_owner_object.rb +3 -0
  443. data/spec/app/models/override.rb +3 -0
  444. data/spec/app/models/ownable.rb +3 -0
  445. data/spec/app/models/owner.rb +3 -0
  446. data/spec/app/models/pack.rb +3 -0
  447. data/spec/app/models/page.rb +3 -0
  448. data/spec/app/models/page_question.rb +3 -0
  449. data/spec/app/models/palette.rb +3 -0
  450. data/spec/app/models/parent.rb +3 -0
  451. data/spec/app/models/parent_doc.rb +3 -0
  452. data/spec/app/models/passport.rb +3 -0
  453. data/spec/app/models/patient.rb +3 -0
  454. data/spec/app/models/pdf_writer.rb +3 -0
  455. data/spec/app/models/pencil.rb +3 -0
  456. data/spec/app/models/person.rb +3 -0
  457. data/spec/app/models/pet.rb +3 -0
  458. data/spec/app/models/pet_owner.rb +3 -0
  459. data/spec/app/models/phone.rb +3 -0
  460. data/spec/app/models/pizza.rb +3 -0
  461. data/spec/app/models/player.rb +3 -0
  462. data/spec/app/models/post.rb +3 -0
  463. data/spec/app/models/post_genre.rb +3 -0
  464. data/spec/app/models/powerup.rb +3 -0
  465. data/spec/app/models/preference.rb +3 -0
  466. data/spec/app/models/princess.rb +3 -0
  467. data/spec/app/models/product.rb +3 -0
  468. data/spec/app/models/profile.rb +3 -0
  469. data/spec/app/models/pronunciation.rb +3 -0
  470. data/spec/app/models/pub.rb +3 -0
  471. data/spec/app/models/purchase.rb +3 -0
  472. data/spec/app/models/question.rb +3 -0
  473. data/spec/app/models/quiz.rb +3 -0
  474. data/spec/app/models/rating.rb +3 -0
  475. data/spec/app/models/record.rb +3 -0
  476. data/spec/app/models/registry.rb +3 -0
  477. data/spec/app/models/role.rb +3 -0
  478. data/spec/app/models/root_category.rb +3 -0
  479. data/spec/app/models/sandwich.rb +3 -0
  480. data/spec/app/models/scheduler.rb +3 -0
  481. data/spec/app/models/seo.rb +3 -0
  482. data/spec/app/models/series.rb +3 -0
  483. data/spec/app/models/server.rb +3 -0
  484. data/spec/app/models/service.rb +3 -0
  485. data/spec/app/models/shape.rb +3 -0
  486. data/spec/app/models/shelf.rb +3 -0
  487. data/spec/app/models/shipment_address.rb +3 -0
  488. data/spec/app/models/shipping_container.rb +3 -0
  489. data/spec/app/models/shipping_pack.rb +3 -0
  490. data/spec/app/models/shop.rb +3 -0
  491. data/spec/app/models/short_agent.rb +3 -0
  492. data/spec/app/models/short_quiz.rb +3 -0
  493. data/spec/app/models/simple.rb +3 -0
  494. data/spec/app/models/slave.rb +3 -0
  495. data/spec/app/models/song.rb +3 -0
  496. data/spec/app/models/sound.rb +3 -0
  497. data/spec/app/models/square.rb +3 -0
  498. data/spec/app/models/staff.rb +3 -0
  499. data/spec/app/models/store_as_dup_test1.rb +3 -0
  500. data/spec/app/models/store_as_dup_test2.rb +3 -0
  501. data/spec/app/models/store_as_dup_test3.rb +1 -0
  502. data/spec/app/models/store_as_dup_test4.rb +1 -0
  503. data/spec/app/models/strategy.rb +3 -0
  504. data/spec/app/models/sub_item.rb +3 -0
  505. data/spec/app/models/subscription.rb +3 -0
  506. data/spec/app/models/survey.rb +3 -0
  507. data/spec/app/models/symptom.rb +3 -0
  508. data/spec/app/models/tag.rb +3 -0
  509. data/spec/app/models/target.rb +3 -0
  510. data/spec/app/models/template.rb +3 -0
  511. data/spec/app/models/thing.rb +3 -0
  512. data/spec/app/models/title.rb +3 -0
  513. data/spec/app/models/tool.rb +3 -0
  514. data/spec/app/models/topping.rb +3 -0
  515. data/spec/app/models/track.rb +3 -0
  516. data/spec/app/models/translation.rb +3 -0
  517. data/spec/app/models/tree.rb +3 -0
  518. data/spec/app/models/truck.rb +3 -0
  519. data/spec/app/models/updatable.rb +1 -0
  520. data/spec/app/models/user.rb +3 -0
  521. data/spec/app/models/user_account.rb +3 -0
  522. data/spec/app/models/validation_callback.rb +3 -0
  523. data/spec/app/models/vehicle.rb +3 -0
  524. data/spec/app/models/version.rb +3 -0
  525. data/spec/app/models/vertex.rb +4 -1
  526. data/spec/app/models/vet_visit.rb +3 -0
  527. data/spec/app/models/video.rb +3 -0
  528. data/spec/app/models/video_game.rb +3 -0
  529. data/spec/app/models/weapon.rb +3 -0
  530. data/spec/app/models/wiki_page.rb +3 -0
  531. data/spec/app/models/word.rb +3 -0
  532. data/spec/app/models/word_origin.rb +3 -0
  533. data/spec/app/models/writer.rb +3 -0
  534. data/spec/config/mongoid.yml +1 -0
  535. data/spec/integration/associations/belongs_to_spec.rb +3 -0
  536. data/spec/integration/associations/embedded_spec.rb +0 -55
  537. data/spec/integration/associations/foreign_key_spec.rb +99 -0
  538. data/spec/integration/associations/foreign_key_spec_models.rb +65 -0
  539. data/spec/integration/associations/reverse_population_spec.rb +35 -0
  540. data/spec/integration/associations/reverse_population_spec_models.rb +37 -0
  541. data/spec/integration/criteria/default_scope_spec.rb +21 -0
  542. data/spec/integration/criteria/logical_spec.rb +81 -0
  543. data/spec/integration/i18n_fallbacks_spec.rb +90 -0
  544. data/spec/lite_spec_helper.rb +11 -18
  545. data/spec/mongoid/association/accessors_spec.rb +3 -0
  546. data/spec/mongoid/association/auto_save_spec.rb +3 -0
  547. data/spec/mongoid/association/builders_spec.rb +3 -0
  548. data/spec/mongoid/association/constrainable_spec.rb +3 -0
  549. data/spec/mongoid/association/counter_cache_spec.rb +3 -0
  550. data/spec/mongoid/association/depending_spec.rb +3 -0
  551. data/spec/mongoid/association/eager_spec.rb +3 -0
  552. data/spec/mongoid/association/embedded/cyclic_spec.rb +3 -0
  553. data/spec/mongoid/association/embedded/dirty_spec.rb +3 -0
  554. data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +3 -0
  555. data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +3 -0
  556. data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +3 -50
  557. data/spec/mongoid/association/embedded/embedded_in_spec.rb +4 -1
  558. data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +3 -0
  559. data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +3 -0
  560. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +3 -0
  561. data/spec/mongoid/association/embedded/embeds_many_models.rb +0 -19
  562. data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +52 -0
  563. data/spec/mongoid/association/embedded/embeds_many_spec.rb +4 -11
  564. data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +3 -0
  565. data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +3 -0
  566. data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +3 -0
  567. data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +3 -0
  568. data/spec/mongoid/association/embedded/embeds_one_models.rb +3 -0
  569. data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +29 -0
  570. data/spec/mongoid/association/embedded/embeds_one_spec.rb +6 -1
  571. data/spec/mongoid/association/macros_spec.rb +3 -0
  572. data/spec/mongoid/association/nested/many_spec.rb +3 -0
  573. data/spec/mongoid/association/nested/one_spec.rb +3 -0
  574. data/spec/mongoid/association/options_spec.rb +3 -0
  575. data/spec/mongoid/association/polymorphic_spec.rb +3 -0
  576. data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +3 -0
  577. data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +3 -0
  578. data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +12 -0
  579. data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +3 -0
  580. data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +38 -0
  581. data/spec/mongoid/association/referenced/belongs_to_spec.rb +3 -0
  582. data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +3 -0
  583. data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +3 -0
  584. data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +16 -0
  585. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +26 -5
  586. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +38 -154
  587. data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +26 -2
  588. data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +40 -0
  589. data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +26 -2
  590. data/spec/mongoid/association/referenced/has_many/binding_spec.rb +3 -0
  591. data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +3 -0
  592. data/spec/mongoid/association/referenced/has_many/eager_spec.rb +18 -3
  593. data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +71 -146
  594. data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +1 -0
  595. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +4 -2
  596. data/spec/mongoid/association/referenced/has_many_models.rb +3 -0
  597. data/spec/mongoid/association/referenced/has_many_query_spec.rb +38 -0
  598. data/spec/mongoid/association/referenced/has_many_spec.rb +3 -0
  599. data/spec/mongoid/association/referenced/has_one/binding_spec.rb +3 -0
  600. data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +3 -0
  601. data/spec/mongoid/association/referenced/has_one/eager_spec.rb +18 -3
  602. data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +3 -0
  603. data/spec/mongoid/association/referenced/has_one_models.rb +3 -0
  604. data/spec/mongoid/association/referenced/has_one_query_spec.rb +38 -0
  605. data/spec/mongoid/association/referenced/has_one_spec.rb +3 -0
  606. data/spec/mongoid/association/reflections_spec.rb +3 -0
  607. data/spec/mongoid/association/syncable_spec.rb +3 -0
  608. data/spec/mongoid/association_spec.rb +3 -0
  609. data/spec/mongoid/atomic/modifiers_spec.rb +3 -0
  610. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +3 -0
  611. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +3 -0
  612. data/spec/mongoid/atomic/paths/root_spec.rb +3 -0
  613. data/spec/mongoid/atomic/paths_spec.rb +3 -41
  614. data/spec/mongoid/atomic_spec.rb +3 -0
  615. data/spec/mongoid/attributes/nested_spec.rb +3 -0
  616. data/spec/mongoid/attributes/readonly_spec.rb +3 -0
  617. data/spec/mongoid/attributes_spec.rb +10 -260
  618. data/spec/mongoid/cacheable_spec.rb +3 -0
  619. data/spec/mongoid/changeable_spec.rb +3 -0
  620. data/spec/mongoid/clients/factory_spec.rb +38 -20
  621. data/spec/mongoid/clients/options_spec.rb +24 -13
  622. data/spec/mongoid/clients/sessions_spec.rb +7 -8
  623. data/spec/mongoid/clients/transactions_spec.rb +14 -23
  624. data/spec/mongoid/clients_spec.rb +5 -2
  625. data/spec/mongoid/composable_spec.rb +3 -0
  626. data/spec/mongoid/config/environment_spec.rb +3 -0
  627. data/spec/mongoid/config/options_spec.rb +23 -3
  628. data/spec/mongoid/config_spec.rb +39 -0
  629. data/spec/mongoid/contextual/aggregable/memory_spec.rb +3 -0
  630. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +3 -0
  631. data/spec/mongoid/contextual/atomic_spec.rb +113 -37
  632. data/spec/mongoid/contextual/geo_near_spec.rb +5 -11
  633. data/spec/mongoid/contextual/map_reduce_spec.rb +8 -20
  634. data/spec/mongoid/contextual/memory_spec.rb +3 -0
  635. data/spec/mongoid/contextual/mongo_spec.rb +58 -76
  636. data/spec/mongoid/contextual/none_spec.rb +3 -0
  637. data/spec/mongoid/copyable_spec.rb +3 -0
  638. data/spec/mongoid/copyable_spec_models.rb +3 -0
  639. data/spec/mongoid/criteria/findable_spec.rb +58 -0
  640. data/spec/mongoid/criteria/inspectable_spec.rb +3 -0
  641. data/spec/mongoid/criteria/marshalable_spec.rb +3 -0
  642. data/spec/mongoid/criteria/modifiable_spec.rb +7 -3
  643. data/spec/mongoid/criteria/options_spec.rb +3 -0
  644. data/spec/mongoid/criteria/queryable/aggregable_spec.rb +3 -0
  645. data/spec/mongoid/criteria/queryable/expandable_spec.rb +135 -0
  646. data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +3 -0
  647. data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +3 -0
  648. data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +3 -0
  649. data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +3 -0
  650. data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +3 -0
  651. data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +36 -17
  652. data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +3 -0
  653. data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +3 -0
  654. data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +3 -0
  655. data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +3 -0
  656. data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +3 -0
  657. data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +3 -0
  658. data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +3 -0
  659. data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +3 -0
  660. data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +10 -7
  661. data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +3 -0
  662. data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +4 -1
  663. data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +3 -0
  664. data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +31 -35
  665. data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +4 -28
  666. data/spec/mongoid/criteria/queryable/key_spec.rb +3 -0
  667. data/spec/mongoid/criteria/queryable/mergeable_spec.rb +3 -0
  668. data/spec/mongoid/criteria/queryable/optional_spec.rb +3 -0
  669. data/spec/mongoid/criteria/queryable/options_spec.rb +3 -0
  670. data/spec/mongoid/criteria/queryable/pipeline_spec.rb +3 -0
  671. data/spec/mongoid/criteria/queryable/queryable_spec.rb +3 -0
  672. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +564 -156
  673. data/spec/mongoid/criteria/queryable/selectable_spec.rb +950 -2165
  674. data/spec/mongoid/criteria/queryable/selector_spec.rb +3 -0
  675. data/spec/mongoid/criteria/queryable/smash_spec.rb +3 -0
  676. data/spec/mongoid/criteria/queryable/storable_spec.rb +112 -0
  677. data/spec/mongoid/criteria/scopable_spec.rb +3 -0
  678. data/spec/mongoid/criteria_spec.rb +39 -4
  679. data/spec/mongoid/document_fields_spec.rb +0 -29
  680. data/spec/mongoid/document_query_spec.rb +39 -0
  681. data/spec/mongoid/document_spec.rb +3 -0
  682. data/spec/mongoid/equality_spec.rb +3 -0
  683. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +6 -3
  684. data/spec/mongoid/errors/callback_spec.rb +3 -0
  685. data/spec/mongoid/errors/delete_restriction_spec.rb +3 -0
  686. data/spec/mongoid/errors/document_not_destroyed_spec.rb +3 -0
  687. data/spec/mongoid/errors/document_not_found_spec.rb +3 -0
  688. data/spec/mongoid/errors/eager_load_spec.rb +3 -0
  689. data/spec/mongoid/errors/invalid_collection_spec.rb +3 -0
  690. data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -0
  691. data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -0
  692. data/spec/mongoid/errors/invalid_field_spec.rb +3 -0
  693. data/spec/mongoid/errors/invalid_find_spec.rb +3 -0
  694. data/spec/mongoid/errors/invalid_includes_spec.rb +3 -0
  695. data/spec/mongoid/errors/invalid_index_spec.rb +3 -0
  696. data/spec/mongoid/errors/invalid_options_spec.rb +5 -2
  697. data/spec/mongoid/errors/invalid_path_spec.rb +3 -0
  698. data/spec/mongoid/errors/invalid_relation_spec.rb +5 -2
  699. data/spec/mongoid/errors/invalid_scope_spec.rb +3 -0
  700. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -0
  701. data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -0
  702. data/spec/mongoid/errors/invalid_time_spec.rb +3 -0
  703. data/spec/mongoid/errors/inverse_not_found_spec.rb +4 -1
  704. data/spec/mongoid/errors/mixed_client_configuration_spec.rb +3 -0
  705. data/spec/mongoid/errors/mixed_relations_spec.rb +3 -0
  706. data/spec/mongoid/errors/mongoid_error_spec.rb +3 -0
  707. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +6 -3
  708. data/spec/mongoid/errors/no_client_config_spec.rb +3 -0
  709. data/spec/mongoid/errors/no_client_database_spec.rb +3 -0
  710. data/spec/mongoid/errors/no_client_hosts_spec.rb +3 -0
  711. data/spec/mongoid/errors/no_clients_config_spec.rb +3 -0
  712. data/spec/mongoid/errors/no_environment_spec.rb +3 -0
  713. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -0
  714. data/spec/mongoid/errors/no_metadata_spec.rb +5 -2
  715. data/spec/mongoid/errors/no_parent_spec.rb +4 -1
  716. data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -0
  717. data/spec/mongoid/errors/readonly_document_spec.rb +3 -0
  718. data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -0
  719. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -0
  720. data/spec/mongoid/errors/unknown_attribute_spec.rb +3 -0
  721. data/spec/mongoid/errors/unsaved_document_spec.rb +4 -1
  722. data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -0
  723. data/spec/mongoid/errors/validations_spec.rb +3 -0
  724. data/spec/mongoid/extensions/array_spec.rb +26 -43
  725. data/spec/mongoid/extensions/big_decimal_spec.rb +3 -0
  726. data/spec/mongoid/extensions/binary_spec.rb +3 -0
  727. data/spec/mongoid/extensions/boolean_spec.rb +3 -0
  728. data/spec/mongoid/extensions/date_class_mongoize_spec.rb +336 -0
  729. data/spec/mongoid/extensions/date_spec.rb +9 -160
  730. data/spec/mongoid/extensions/date_time_spec.rb +18 -60
  731. data/spec/mongoid/extensions/decimal128_spec.rb +3 -0
  732. data/spec/mongoid/extensions/false_class_spec.rb +3 -0
  733. data/spec/mongoid/extensions/float_spec.rb +18 -3
  734. data/spec/mongoid/extensions/hash_spec.rb +106 -0
  735. data/spec/mongoid/extensions/integer_spec.rb +15 -2
  736. data/spec/mongoid/extensions/module_spec.rb +3 -0
  737. data/spec/mongoid/extensions/nil_class_spec.rb +3 -0
  738. data/spec/mongoid/extensions/object_id_spec.rb +3 -0
  739. data/spec/mongoid/extensions/object_spec.rb +14 -24
  740. data/spec/mongoid/extensions/range_spec.rb +3 -0
  741. data/spec/mongoid/extensions/regexp_spec.rb +3 -0
  742. data/spec/mongoid/extensions/set_spec.rb +3 -0
  743. data/spec/mongoid/extensions/string_spec.rb +60 -26
  744. data/spec/mongoid/extensions/symbol_spec.rb +3 -0
  745. data/spec/mongoid/extensions/time_spec.rb +30 -0
  746. data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -0
  747. data/spec/mongoid/extensions/true_class_spec.rb +3 -0
  748. data/spec/mongoid/extensions_spec.rb +3 -0
  749. data/spec/mongoid/factory_spec.rb +29 -2
  750. data/spec/mongoid/fields/foreign_key_spec.rb +3 -0
  751. data/spec/mongoid/fields/localized_spec.rb +3 -0
  752. data/spec/mongoid/fields/standard_spec.rb +3 -0
  753. data/spec/mongoid/fields_spec.rb +18 -0
  754. data/spec/mongoid/findable_spec.rb +3 -0
  755. data/spec/mongoid/indexable/specification_spec.rb +3 -0
  756. data/spec/mongoid/indexable_spec.rb +7 -6
  757. data/spec/mongoid/inspectable_spec.rb +3 -0
  758. data/spec/mongoid/interceptable_spec.rb +3 -0
  759. data/spec/mongoid/loggable_spec.rb +3 -0
  760. data/spec/mongoid/matchable/all_spec.rb +3 -0
  761. data/spec/mongoid/matchable/and_spec.rb +3 -0
  762. data/spec/mongoid/matchable/default_spec.rb +4 -1
  763. data/spec/mongoid/matchable/elem_match_spec.rb +3 -0
  764. data/spec/mongoid/matchable/eq_spec.rb +1 -0
  765. data/spec/mongoid/matchable/exists_spec.rb +3 -0
  766. data/spec/mongoid/matchable/gt_spec.rb +3 -0
  767. data/spec/mongoid/matchable/gte_spec.rb +3 -0
  768. data/spec/mongoid/matchable/in_spec.rb +3 -0
  769. data/spec/mongoid/matchable/lt_spec.rb +3 -0
  770. data/spec/mongoid/matchable/lte_spec.rb +3 -0
  771. data/spec/mongoid/matchable/ne_spec.rb +3 -0
  772. data/spec/mongoid/matchable/nin_spec.rb +3 -0
  773. data/spec/mongoid/matchable/nor_spec.rb +1 -0
  774. data/spec/mongoid/matchable/or_spec.rb +3 -0
  775. data/spec/mongoid/matchable/regexp_spec.rb +5 -2
  776. data/spec/mongoid/matchable/size_spec.rb +3 -0
  777. data/spec/mongoid/matchable_spec.rb +5 -2
  778. data/spec/mongoid/persistable/creatable_spec.rb +3 -0
  779. data/spec/mongoid/persistable/deletable_spec.rb +3 -0
  780. data/spec/mongoid/persistable/destroyable_spec.rb +3 -0
  781. data/spec/mongoid/persistable/incrementable_spec.rb +17 -0
  782. data/spec/mongoid/persistable/logical_spec.rb +17 -0
  783. data/spec/mongoid/persistable/poppable_spec.rb +17 -0
  784. data/spec/mongoid/persistable/pullable_spec.rb +31 -0
  785. data/spec/mongoid/persistable/pushable_spec.rb +32 -55
  786. data/spec/mongoid/persistable/renamable_spec.rb +17 -0
  787. data/spec/mongoid/persistable/savable_spec.rb +7 -4
  788. data/spec/mongoid/persistable/settable_spec.rb +17 -30
  789. data/spec/mongoid/persistable/unsettable_spec.rb +17 -0
  790. data/spec/mongoid/persistable/updatable_spec.rb +3 -0
  791. data/spec/mongoid/persistable/upsertable_spec.rb +3 -0
  792. data/spec/mongoid/persistable_spec.rb +85 -8
  793. data/spec/mongoid/persistence_context_spec.rb +3 -0
  794. data/spec/mongoid/positional_spec.rb +3 -0
  795. data/spec/mongoid/query_cache_middleware_spec.rb +48 -0
  796. data/spec/mongoid/query_cache_spec.rb +12 -121
  797. data/spec/mongoid/relations/proxy_spec.rb +4 -1
  798. data/spec/mongoid/reloadable_spec.rb +3 -0
  799. data/spec/mongoid/scopable_spec.rb +4 -2
  800. data/spec/mongoid/selectable_spec.rb +3 -0
  801. data/spec/mongoid/serializable_spec.rb +3 -0
  802. data/spec/mongoid/shardable_spec.rb +3 -0
  803. data/spec/mongoid/stateful_spec.rb +3 -0
  804. data/spec/mongoid/tasks/database_rake_spec.rb +16 -13
  805. data/spec/mongoid/tasks/database_spec.rb +4 -1
  806. data/spec/mongoid/threaded_spec.rb +3 -0
  807. data/spec/mongoid/timestamps/created/short_spec.rb +3 -0
  808. data/spec/mongoid/timestamps/created_spec.rb +3 -0
  809. data/spec/mongoid/timestamps/timeless_spec.rb +3 -0
  810. data/spec/mongoid/timestamps/updated/short_spec.rb +3 -0
  811. data/spec/mongoid/timestamps/updated_spec.rb +3 -0
  812. data/spec/mongoid/timestamps_spec.rb +3 -0
  813. data/spec/mongoid/touchable_spec.rb +49 -3
  814. data/spec/mongoid/traversable_spec.rb +3 -0
  815. data/spec/mongoid/validatable/associated_spec.rb +3 -0
  816. data/spec/mongoid/validatable/format_spec.rb +3 -0
  817. data/spec/mongoid/validatable/length_spec.rb +3 -0
  818. data/spec/mongoid/validatable/numericality_spec.rb +3 -0
  819. data/spec/mongoid/validatable/presence_spec.rb +3 -0
  820. data/spec/mongoid/validatable/uniqueness_spec.rb +3 -0
  821. data/spec/mongoid/validatable_spec.rb +3 -0
  822. data/spec/mongoid_spec.rb +3 -0
  823. data/spec/rails/controller_extension/controller_runtime_spec.rb +4 -1
  824. data/spec/rails/mongoid_spec.rb +5 -2
  825. data/spec/spec_helper.rb +50 -15
  826. data/spec/support/authorization.rb +3 -0
  827. data/spec/support/cluster_config.rb +3 -3
  828. data/spec/support/constraints.rb +211 -17
  829. data/spec/support/expectations.rb +3 -0
  830. data/spec/support/macros.rb +1 -0
  831. data/spec/support/shared/time.rb +54 -0
  832. data/spec/support/spec_config.rb +7 -20
  833. metadata +508 -515
  834. metadata.gz.sig +2 -1
  835. data/lib/mongoid/criteria/queryable/forwardable.rb +0 -65
  836. data/spec/app/models/customer.rb +0 -11
  837. data/spec/app/models/customer_address.rb +0 -12
  838. data/spec/app/models/delegating_patient.rb +0 -16
  839. data/spec/integration/app_spec.rb +0 -341
  840. data/spec/integration/callbacks_models.rb +0 -49
  841. data/spec/integration/callbacks_spec.rb +0 -216
  842. data/spec/integration/criteria/date_field_spec.rb +0 -41
  843. data/spec/integration/document_spec.rb +0 -22
  844. data/spec/mongoid/criteria/queryable/forwardable_spec.rb +0 -87
  845. data/spec/mongoid/document_persistence_context_spec.rb +0 -33
  846. data/spec/shared/LICENSE +0 -20
  847. data/spec/shared/bin/get-mongodb-download-url +0 -17
  848. data/spec/shared/lib/mrss/child_process_helper.rb +0 -80
  849. data/spec/shared/lib/mrss/cluster_config.rb +0 -221
  850. data/spec/shared/lib/mrss/constraints.rb +0 -354
  851. data/spec/shared/lib/mrss/docker_runner.rb +0 -265
  852. data/spec/shared/lib/mrss/lite_constraints.rb +0 -191
  853. data/spec/shared/lib/mrss/server_version_registry.rb +0 -115
  854. data/spec/shared/lib/mrss/spec_organizer.rb +0 -162
  855. data/spec/shared/lib/mrss/utils.rb +0 -15
  856. data/spec/shared/share/Dockerfile.erb +0 -231
  857. data/spec/shared/shlib/distro.sh +0 -73
  858. data/spec/shared/shlib/server.sh +0 -290
  859. data/spec/shared/shlib/set_env.sh +0 -128
  860. data/spec/support/session_registry.rb +0 -50
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
1
4
  require 'mongoid/association/embedded/embeds_one/binding'
2
5
  require 'mongoid/association/embedded/embeds_one/buildable'
3
6
  require 'mongoid/association/embedded/embeds_one/proxy'
@@ -58,7 +61,7 @@ module Mongoid
58
61
 
59
62
  # The key that is used to get the attributes for the associated object.
60
63
  #
61
- # @return [ String ] The name of the field used to store the relation.
64
+ # @return [ String ] The name of the field used to store the association.
62
65
  #
63
66
  # @since 7.0
64
67
  def key
@@ -72,7 +75,7 @@ module Mongoid
72
75
  # @since 7.0
73
76
  def embedded?; true; end
74
77
 
75
- # Get the default validation setting for the relation. Determines if
78
+ # Get the default validation setting for the association. Determines if
76
79
  # by default a validates associated will occur.
77
80
  #
78
81
  # @example Get the validation default.
@@ -92,10 +95,10 @@ module Mongoid
92
95
 
93
96
  # The primary key
94
97
  #
95
- # @return [ nil ] Not relevant for this relation
98
+ # @return [ nil ] Not relevant for this association
96
99
  def primary_key; end
97
100
 
98
- # Get the relation proxy class for this association type.
101
+ # Get the association proxy class for this association type.
99
102
  #
100
103
  # @return [ Association::Embedded::EmbedsMany::Proxy ] The proxy class.
101
104
  #
@@ -159,8 +162,7 @@ module Mongoid
159
162
  def determine_inverses(other)
160
163
  matches = relation_class.relations.values.select do |rel|
161
164
  relation_complements.include?(rel.class) &&
162
- # https://jira.mongodb.org/browse/MONGOID-4882
163
- rel.relation_class_name.sub(/\A::/, '') == inverse_class_name
165
+ rel.relation_class_name == inverse_class_name
164
166
 
165
167
  end
166
168
  if matches.size > 1
@@ -1,15 +1,18 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
1
4
  module Mongoid
2
5
  module Association
3
6
  module Embedded
4
7
  class EmbedsOne
5
8
 
6
- # Binding class for all embeds_one relations.
9
+ # Binding class for all embeds_one associations.
7
10
  #
8
11
  # @since 7.0
9
12
  class Binding
10
13
  include Bindable
11
14
 
12
- # Binds the base object to the inverse of the relation. This is so we
15
+ # Binds the base object to the inverse of the association. This is so we
13
16
  # are referenced to the actual objects themselves on both sides.
14
17
  #
15
18
  # This case sets the association metadata on the inverse object as well as the
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
1
4
  module Mongoid
2
5
  module Association
3
6
  module Embedded
@@ -10,21 +13,24 @@ module Mongoid
10
13
  include Threaded::Lifecycle
11
14
 
12
15
  # Builds the document out of the attributes using the provided
13
- # association metadata on the relation. Instantiates through the factory in order
16
+ # association metadata on the association. Instantiates through the factory in order
14
17
  # to make sure subclasses and allocation are used if fitting.
15
18
  #
16
19
  # @example Build the document.
17
20
  # Builder.new(meta, attrs).build
18
21
  #
19
- # @param [ Document ] base The document this relation hangs off of.
22
+ # @param [ Document ] base The document this association hangs off of.
20
23
  # @param [ Document ] object The related document.
21
24
  # @param [ String ] _type Not used in this context.
25
+ # @param [ Hash ] selected_fields Fields which were retrieved via
26
+ # #only. If selected_fields are specified, fields not listed in it
27
+ # will not be accessible in the built document.
22
28
  #
23
29
  # @return [ Document ] A single document.
24
- def build(base, object, _type = nil)
30
+ def build(base, object, _type = nil, selected_fields = nil)
25
31
  return object unless object.is_a?(Hash)
26
32
  if _loading? && base.persisted?
27
- Factory.from_db(klass, object)
33
+ Factory.from_db(klass, object, nil, selected_fields)
28
34
  else
29
35
  Factory.build(klass, object)
30
36
  end
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
1
4
  module Mongoid
2
5
  module Association
3
6
  module Embedded
@@ -5,9 +8,9 @@ module Mongoid
5
8
 
6
9
  class Proxy < Association::One
7
10
 
8
- # The valid options when defining this relation.
11
+ # The valid options when defining this association.
9
12
  #
10
- # @return [ Array<Symbol> ] The allowed options when defining this relation.
13
+ # @return [ Array<Symbol> ] The allowed options when defining this association.
11
14
  #
12
15
  # @since 7.0
13
16
  VALID_OPTIONS = [
@@ -18,13 +21,13 @@ module Mongoid
18
21
  :store_as
19
22
  ].freeze
20
23
 
21
- # Instantiate a new embeds_one relation.
24
+ # Instantiate a new embeds_one association.
22
25
  #
23
26
  # @example Create the new proxy.
24
27
  # One.new(person, name, association)
25
28
  #
26
- # @param [ Document ] base The document this relation hangs off of.
27
- # @param [ Document ] target The child document in the relation.
29
+ # @param [ Document ] base The document this association hangs off of.
30
+ # @param [ Document ] target The child document in the association.
28
31
  # @param [ Association ] association The association metadata.
29
32
  def initialize(base, target, association)
30
33
  init(base, target, association) do
@@ -37,14 +40,14 @@ module Mongoid
37
40
  end
38
41
 
39
42
  # Substitutes the supplied target documents for the existing document
40
- # in the relation.
43
+ # in the association.
41
44
  #
42
45
  # @example Substitute the new document.
43
46
  # person.name.substitute(new_name)
44
47
  #
45
48
  # @param [ Document ] replacement A document to replace the target.
46
49
  #
47
- # @return [ Document, nil ] The relation or nil.
50
+ # @return [ Document, nil ] The association or nil.
48
51
  #
49
52
  # @since 2.0.0.rc.1
50
53
  def substitute(replacement)
@@ -69,24 +72,24 @@ module Mongoid
69
72
 
70
73
  private
71
74
 
72
- # Instantiate the binding associated with this relation.
75
+ # Instantiate the binding associated with this association.
73
76
  #
74
77
  # @example Get the binding.
75
78
  # relation.binding([ address ])
76
79
  #
77
- # @return [ Binding ] The relation's binding.
80
+ # @return [ Binding ] The association's binding.
78
81
  #
79
82
  # @since 2.0.0.rc.1
80
83
  def binding
81
84
  Binding.new(_base, _target, _association)
82
85
  end
83
86
 
84
- # Are we able to persist this relation?
87
+ # Are we able to persist this association?
85
88
  #
86
- # @example Can we persist the relation?
89
+ # @example Can we persist the association?
87
90
  # relation.persistable?
88
91
  #
89
- # @return [ true, false ] If the relation is persistable.
92
+ # @return [ true, false ] If the association is persistable.
90
93
  #
91
94
  # @since 2.1.0
92
95
  def persistable?
@@ -95,10 +98,10 @@ module Mongoid
95
98
 
96
99
  class << self
97
100
 
98
- # Returns true if the relation is an embedded one. In this case
101
+ # Returns true if the association is an embedded one. In this case
99
102
  # always true.
100
103
  #
101
- # @example Is this relation embedded?
104
+ # @example Is this association embedded?
102
105
  # Association::Embedded::EmbedsOne.embedded?
103
106
  #
104
107
  # @return [ true ] true.
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  module Association
4
6
 
5
- # This module contains the core macros for defining relations between
6
- # documents. They can be either embedded or referenced (relational).
7
+ # This module contains the core macros for defining associations between
8
+ # documents. They can be either embedded or referenced.
7
9
  module Macros
8
10
  extend ActiveSupport::Concern
9
11
 
@@ -21,7 +23,7 @@ module Mongoid
21
23
  # @example Get the associations.
22
24
  # person.associations
23
25
  #
24
- # @return [ Hash ] The relations.
26
+ # @return [ Hash ] The associations.
25
27
  #
26
28
  # @since 2.3.1
27
29
  def associations
@@ -30,12 +32,12 @@ module Mongoid
30
32
 
31
33
  module ClassMethods
32
34
 
33
- # Adds the relation back to the parent document. This macro is
35
+ # Adds the association back to the parent document. This macro is
34
36
  # necessary to set the references from the child back to the parent
35
- # document. If a child does not define this relation calling
37
+ # document. If a child does not define this association calling
36
38
  # persistence methods on the child object will cause a save to fail.
37
39
  #
38
- # @example Define the relation.
40
+ # @example Define the association.
39
41
  #
40
42
  # class Person
41
43
  # include Mongoid::Document
@@ -47,18 +49,18 @@ module Mongoid
47
49
  # embedded_in :person
48
50
  # end
49
51
  #
50
- # @param [ Symbol ] name The name of the relation.
51
- # @param [ Hash ] options The relation options.
52
+ # @param [ Symbol ] name The name of the association.
53
+ # @param [ Hash ] options The association options.
52
54
  # @param [ Proc ] block Optional block for defining extensions.
53
55
  def embedded_in(name, options = {}, &block)
54
56
  define_association!(__method__, name, options, &block)
55
57
  end
56
58
 
57
- # Adds the relation from a parent document to its children. The name
58
- # of the relation needs to be a pluralized form of the child class
59
+ # Adds the association from a parent document to its children. The name
60
+ # of the association needs to be a pluralized form of the child class
59
61
  # name.
60
62
  #
61
- # @example Define the relation.
63
+ # @example Define the association.
62
64
  #
63
65
  # class Person
64
66
  # include Mongoid::Document
@@ -70,18 +72,18 @@ module Mongoid
70
72
  # embedded_in :person
71
73
  # end
72
74
  #
73
- # @param [ Symbol ] name The name of the relation.
74
- # @param [ Hash ] options The relation options.
75
+ # @param [ Symbol ] name The name of the association.
76
+ # @param [ Hash ] options The association options.
75
77
  # @param [ Proc ] block Optional block for defining extensions.
76
78
  def embeds_many(name, options = {}, &block)
77
79
  define_association!(__method__, name, options, &block)
78
80
  end
79
81
 
80
- # Adds the relation from a parent document to its child. The name
81
- # of the relation needs to be a singular form of the child class
82
+ # Adds the association from a parent document to its child. The name
83
+ # of the association needs to be a singular form of the child class
82
84
  # name.
83
85
  #
84
- # @example Define the relation.
86
+ # @example Define the association.
85
87
  #
86
88
  # class Person
87
89
  # include Mongoid::Document
@@ -93,17 +95,17 @@ module Mongoid
93
95
  # embedded_in :person
94
96
  # end
95
97
  #
96
- # @param [ Symbol ] name The name of the relation.
97
- # @param [ Hash ] options The relation options.
98
+ # @param [ Symbol ] name The name of the association.
99
+ # @param [ Hash ] options The association options.
98
100
  # @param [ Proc ] block Optional block for defining extensions.
99
101
  def embeds_one(name, options = {}, &block)
100
102
  define_association!(__method__, name, options, &block)
101
103
  end
102
104
 
103
- # Adds a relational association from the child Document to a Document in
104
- # another database or collection.
105
+ # Adds a referenced association from the child Document to a Document
106
+ # in another database or collection.
105
107
  #
106
- # @example Define the relation.
108
+ # @example Define the association.
107
109
  #
108
110
  # class Game
109
111
  # include Mongoid::Document
@@ -115,17 +117,17 @@ module Mongoid
115
117
  # has_one :game
116
118
  # end
117
119
  #
118
- # @param [ Symbol ] name The name of the relation.
119
- # @param [ Hash ] options The relation options.
120
+ # @param [ Symbol ] name The name of the association.
121
+ # @param [ Hash ] options The association options.
120
122
  # @param [ Proc ] block Optional block for defining extensions.
121
123
  def belongs_to(name, options = {}, &block)
122
124
  define_association!(__method__, name, options, &block)
123
125
  end
124
126
 
125
- # Adds a relational association from a parent Document to many
127
+ # Adds a referenced association from a parent Document to many
126
128
  # Documents in another database or collection.
127
129
  #
128
- # @example Define the relation.
130
+ # @example Define the association.
129
131
  #
130
132
  # class Person
131
133
  # include Mongoid::Document
@@ -137,17 +139,17 @@ module Mongoid
137
139
  # belongs_to :person
138
140
  # end
139
141
  #
140
- # @param [ Symbol ] name The name of the relation.
141
- # @param [ Hash ] options The relation options.
142
+ # @param [ Symbol ] name The name of the association.
143
+ # @param [ Hash ] options The association options.
142
144
  # @param [ Proc ] block Optional block for defining extensions.
143
145
  def has_many(name, options = {}, &block)
144
146
  define_association!(__method__, name, options, &block)
145
147
  end
146
148
 
147
- # Adds a relational many-to-many association between many of this
149
+ # Adds a referenced many-to-many association between many of this
148
150
  # Document and many of another Document.
149
151
  #
150
- # @example Define the relation.
152
+ # @example Define the association.
151
153
  #
152
154
  # class Person
153
155
  # include Mongoid::Document
@@ -159,8 +161,8 @@ module Mongoid
159
161
  # has_and_belongs_to_many :people
160
162
  # end
161
163
  #
162
- # @param [ Symbol ] name The name of the relation.
163
- # @param [ Hash ] options The relation options.
164
+ # @param [ Symbol ] name The name of the association.
165
+ # @param [ Hash ] options The association options.
164
166
  # @param [ Proc ] block Optional block for defining extensions.
165
167
  #
166
168
  # @since 2.0.0.rc.1
@@ -168,10 +170,10 @@ module Mongoid
168
170
  define_association!(__method__, name, options, &block)
169
171
  end
170
172
 
171
- # Adds a relational association from the child Document to a Document in
172
- # another database or collection.
173
+ # Adds a referenced association from the child Document to a Document
174
+ # in another database or collection.
173
175
  #
174
- # @example Define the relation.
176
+ # @example Define the association.
175
177
  #
176
178
  # class Game
177
179
  # include Mongoid::Document
@@ -183,8 +185,8 @@ module Mongoid
183
185
  # has_one :game
184
186
  # end
185
187
  #
186
- # @param [ Symbol ] name The name of the relation.
187
- # @param [ Hash ] options The relation options.
188
+ # @param [ Symbol ] name The name of the association.
189
+ # @param [ Hash ] options The association options.
188
190
  # @param [ Proc ] block Optional block for defining extensions.
189
191
  def has_one(name, options = {}, &block)
190
192
  define_association!(__method__, name, options, &block)
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  module Association
4
6
 
5
- # This is the superclass for all many to one and many to many relation
7
+ # This is the superclass for all many to one and many to many association
6
8
  # proxies.
7
9
  class Many < Association::Proxy
8
10
  include ::Enumerable
@@ -10,19 +12,19 @@ module Mongoid
10
12
  delegate :avg, :max, :min, :sum, to: :criteria
11
13
  delegate :length, :size, to: :_target
12
14
 
13
- # Is the relation empty?
15
+ # Is the association empty?
14
16
  #
15
- # @example Is the relation empty??
17
+ # @example Is the association empty??
16
18
  # person.addresses.blank?
17
19
  #
18
- # @return [ true, false ] If the relation is empty or not.
20
+ # @return [ true, false ] If the association is empty or not.
19
21
  #
20
22
  # @since 2.1.0
21
23
  def blank?
22
24
  size == 0
23
25
  end
24
26
 
25
- # Creates a new document on the references many relation. This will
27
+ # Creates a new document on the references many association. This will
26
28
  # save the document if the parent has been persisted.
27
29
  #
28
30
  # @example Create and save the new document.
@@ -45,7 +47,7 @@ module Mongoid
45
47
  end
46
48
  end
47
49
 
48
- # Creates a new document on the references many relation. This will
50
+ # Creates a new document on the references many association. This will
49
51
  # save the document if the parent has been persisted and will raise an
50
52
  # error if validation fails.
51
53
  #
@@ -142,9 +144,9 @@ module Mongoid
142
144
  klass.respond_to?(name, include_private) || super
143
145
  end
144
146
 
145
- # This is public access to the relation's criteria.
147
+ # This is public access to the association's criteria.
146
148
  #
147
- # @example Get the scoped relation.
149
+ # @example Get the scoped association.
148
150
  # relation.scoped
149
151
  #
150
152
  # @return [ Criteria ] The scoped criteria.
@@ -163,7 +165,7 @@ module Mongoid
163
165
  #
164
166
  # @param [ Hash ] options The options to pass.
165
167
  #
166
- # @option options [ Symbol ] :include What relations to include
168
+ # @option options [ Symbol ] :include What associations to include
167
169
  # @option options [ Symbol ] :only Limit the fields to only these.
168
170
  # @option options [ Symbol ] :except Dont include these fields.
169
171
  #