mongoid 7.0.10 → 7.1.4

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 (845) 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 +13 -13
  5. data/README.md +23 -17
  6. data/Rakefile +2 -0
  7. data/lib/config/locales/en.yml +61 -52
  8. data/lib/mongoid.rb +10 -2
  9. data/lib/mongoid/association.rb +9 -6
  10. data/lib/mongoid/association/accessors.rb +130 -52
  11. data/lib/mongoid/association/bindable.rb +7 -5
  12. data/lib/mongoid/association/builders.rb +4 -3
  13. data/lib/mongoid/association/constrainable.rb +4 -2
  14. data/lib/mongoid/association/depending.rb +5 -2
  15. data/lib/mongoid/association/eager_loadable.rb +2 -0
  16. data/lib/mongoid/association/embedded.rb +3 -0
  17. data/lib/mongoid/association/embedded/batchable.rb +4 -2
  18. data/lib/mongoid/association/embedded/cyclic.rb +8 -6
  19. data/lib/mongoid/association/embedded/embedded_in.rb +6 -3
  20. data/lib/mongoid/association/embedded/embedded_in/binding.rb +4 -1
  21. data/lib/mongoid/association/embedded/embedded_in/buildable.rb +8 -2
  22. data/lib/mongoid/association/embedded/embedded_in/proxy.rb +15 -12
  23. data/lib/mongoid/association/embedded/embeds_many.rb +7 -4
  24. data/lib/mongoid/association/embedded/embeds_many/binding.rb +5 -2
  25. data/lib/mongoid/association/embedded/embeds_many/buildable.rb +9 -3
  26. data/lib/mongoid/association/embedded/embeds_many/proxy.rb +50 -47
  27. data/lib/mongoid/association/embedded/embeds_one.rb +7 -4
  28. data/lib/mongoid/association/embedded/embeds_one/binding.rb +5 -2
  29. data/lib/mongoid/association/embedded/embeds_one/buildable.rb +10 -4
  30. data/lib/mongoid/association/embedded/embeds_one/proxy.rb +17 -14
  31. data/lib/mongoid/association/macros.rb +38 -36
  32. data/lib/mongoid/association/many.rb +14 -11
  33. data/lib/mongoid/association/marshalable.rb +3 -1
  34. data/lib/mongoid/association/nested.rb +4 -1
  35. data/lib/mongoid/association/nested/many.rb +17 -15
  36. data/lib/mongoid/association/nested/nested_buildable.rb +6 -3
  37. data/lib/mongoid/association/nested/one.rb +11 -9
  38. data/lib/mongoid/association/one.rb +3 -1
  39. data/lib/mongoid/association/options.rb +9 -6
  40. data/lib/mongoid/association/proxy.rb +30 -13
  41. data/lib/mongoid/association/referenced.rb +3 -0
  42. data/lib/mongoid/association/referenced/auto_save.rb +4 -1
  43. data/lib/mongoid/association/referenced/belongs_to.rb +6 -3
  44. data/lib/mongoid/association/referenced/belongs_to/binding.rb +4 -2
  45. data/lib/mongoid/association/referenced/belongs_to/buildable.rb +6 -3
  46. data/lib/mongoid/association/referenced/belongs_to/eager.rb +40 -2
  47. data/lib/mongoid/association/referenced/belongs_to/proxy.rb +16 -14
  48. data/lib/mongoid/association/referenced/counter_cache.rb +2 -0
  49. data/lib/mongoid/association/referenced/eager.rb +37 -15
  50. data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +13 -6
  51. data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +12 -6
  52. data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +5 -2
  53. data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +2 -0
  54. data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +25 -18
  55. data/lib/mongoid/association/referenced/has_many.rb +7 -4
  56. data/lib/mongoid/association/referenced/has_many/binding.rb +3 -1
  57. data/lib/mongoid/association/referenced/has_many/buildable.rb +5 -2
  58. data/lib/mongoid/association/referenced/has_many/eager.rb +2 -0
  59. data/lib/mongoid/association/referenced/has_many/enumerable.rb +11 -4
  60. data/lib/mongoid/association/referenced/has_many/proxy.rb +46 -43
  61. data/lib/mongoid/association/referenced/has_one.rb +5 -2
  62. data/lib/mongoid/association/referenced/has_one/binding.rb +4 -2
  63. data/lib/mongoid/association/referenced/has_one/buildable.rb +8 -1
  64. data/lib/mongoid/association/referenced/has_one/eager.rb +2 -0
  65. data/lib/mongoid/association/referenced/has_one/nested_builder.rb +11 -9
  66. data/lib/mongoid/association/referenced/has_one/proxy.rb +17 -15
  67. data/lib/mongoid/association/referenced/syncable.rb +7 -5
  68. data/lib/mongoid/association/reflections.rb +7 -5
  69. data/lib/mongoid/association/relatable.rb +17 -14
  70. data/lib/mongoid/atomic.rb +2 -0
  71. data/lib/mongoid/atomic/modifiers.rb +24 -1
  72. data/lib/mongoid/atomic/paths.rb +2 -0
  73. data/lib/mongoid/atomic/paths/embedded.rb +2 -0
  74. data/lib/mongoid/atomic/paths/embedded/many.rb +4 -2
  75. data/lib/mongoid/atomic/paths/embedded/one.rb +4 -2
  76. data/lib/mongoid/atomic/paths/root.rb +4 -2
  77. data/lib/mongoid/attributes.rb +14 -13
  78. data/lib/mongoid/attributes/dynamic.rb +2 -0
  79. data/lib/mongoid/attributes/nested.rb +7 -5
  80. data/lib/mongoid/attributes/processing.rb +8 -6
  81. data/lib/mongoid/attributes/readonly.rb +3 -1
  82. data/lib/mongoid/cacheable.rb +3 -1
  83. data/lib/mongoid/changeable.rb +3 -1
  84. data/lib/mongoid/clients.rb +2 -0
  85. data/lib/mongoid/clients/factory.rb +3 -2
  86. data/lib/mongoid/clients/options.rb +10 -8
  87. data/lib/mongoid/clients/sessions.rb +3 -0
  88. data/lib/mongoid/clients/storage_options.rb +7 -5
  89. data/lib/mongoid/clients/validators.rb +2 -0
  90. data/lib/mongoid/clients/validators/storage.rb +2 -0
  91. data/lib/mongoid/composable.rb +4 -2
  92. data/lib/mongoid/config.rb +53 -10
  93. data/lib/mongoid/config/environment.rb +2 -0
  94. data/lib/mongoid/config/options.rb +20 -12
  95. data/lib/mongoid/config/validators.rb +2 -0
  96. data/lib/mongoid/config/validators/client.rb +2 -0
  97. data/lib/mongoid/config/validators/option.rb +2 -0
  98. data/lib/mongoid/contextual.rb +7 -4
  99. data/lib/mongoid/contextual/aggregable/memory.rb +3 -1
  100. data/lib/mongoid/contextual/aggregable/mongo.rb +3 -1
  101. data/lib/mongoid/contextual/atomic.rb +24 -6
  102. data/lib/mongoid/contextual/command.rb +2 -0
  103. data/lib/mongoid/contextual/geo_near.rb +5 -3
  104. data/lib/mongoid/contextual/map_reduce.rb +5 -2
  105. data/lib/mongoid/contextual/memory.rb +4 -2
  106. data/lib/mongoid/contextual/mongo.rb +6 -1
  107. data/lib/mongoid/contextual/none.rb +2 -0
  108. data/lib/mongoid/contextual/queryable.rb +2 -0
  109. data/lib/mongoid/copyable.rb +3 -1
  110. data/lib/mongoid/criteria.rb +18 -3
  111. data/lib/mongoid/criteria/findable.rb +11 -1
  112. data/lib/mongoid/criteria/includable.rb +8 -6
  113. data/lib/mongoid/criteria/inspectable.rb +2 -0
  114. data/lib/mongoid/criteria/marshalable.rb +2 -0
  115. data/lib/mongoid/criteria/modifiable.rb +2 -0
  116. data/lib/mongoid/criteria/options.rb +2 -0
  117. data/lib/mongoid/criteria/permission.rb +2 -0
  118. data/lib/mongoid/criteria/queryable.rb +7 -2
  119. data/lib/mongoid/criteria/queryable/aggregable.rb +2 -0
  120. data/lib/mongoid/criteria/queryable/expandable.rb +93 -0
  121. data/lib/mongoid/criteria/queryable/extensions.rb +2 -0
  122. data/lib/mongoid/criteria/queryable/extensions/array.rb +3 -1
  123. data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +3 -1
  124. data/lib/mongoid/criteria/queryable/extensions/boolean.rb +2 -0
  125. data/lib/mongoid/criteria/queryable/extensions/date.rb +3 -1
  126. data/lib/mongoid/criteria/queryable/extensions/date_time.rb +5 -6
  127. data/lib/mongoid/criteria/queryable/extensions/hash.rb +3 -1
  128. data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +3 -1
  129. data/lib/mongoid/criteria/queryable/extensions/numeric.rb +3 -1
  130. data/lib/mongoid/criteria/queryable/extensions/object.rb +3 -1
  131. data/lib/mongoid/criteria/queryable/extensions/range.rb +3 -1
  132. data/lib/mongoid/criteria/queryable/extensions/regexp.rb +6 -4
  133. data/lib/mongoid/criteria/queryable/extensions/set.rb +3 -1
  134. data/lib/mongoid/criteria/queryable/extensions/string.rb +3 -1
  135. data/lib/mongoid/criteria/queryable/extensions/symbol.rb +3 -1
  136. data/lib/mongoid/criteria/queryable/extensions/time.rb +3 -1
  137. data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +3 -1
  138. data/lib/mongoid/criteria/queryable/key.rb +34 -6
  139. data/lib/mongoid/criteria/queryable/macroable.rb +3 -1
  140. data/lib/mongoid/criteria/queryable/mergeable.rb +153 -11
  141. data/lib/mongoid/criteria/queryable/optional.rb +5 -3
  142. data/lib/mongoid/criteria/queryable/options.rb +2 -0
  143. data/lib/mongoid/criteria/queryable/pipeline.rb +5 -2
  144. data/lib/mongoid/criteria/queryable/selectable.rb +374 -90
  145. data/lib/mongoid/criteria/queryable/selector.rb +38 -5
  146. data/lib/mongoid/criteria/queryable/smash.rb +2 -0
  147. data/lib/mongoid/criteria/queryable/storable.rb +233 -0
  148. data/lib/mongoid/criteria/scopable.rb +2 -0
  149. data/lib/mongoid/document.rb +2 -0
  150. data/lib/mongoid/equality.rb +3 -2
  151. data/lib/mongoid/errors.rb +3 -0
  152. data/lib/mongoid/errors/ambiguous_relationship.rb +4 -2
  153. data/lib/mongoid/errors/callback.rb +2 -0
  154. data/lib/mongoid/errors/criteria_argument_required.rb +19 -0
  155. data/lib/mongoid/errors/delete_restriction.rb +3 -2
  156. data/lib/mongoid/errors/document_not_destroyed.rb +2 -0
  157. data/lib/mongoid/errors/document_not_found.rb +2 -0
  158. data/lib/mongoid/errors/eager_load.rb +6 -2
  159. data/lib/mongoid/errors/in_memory_collation_not_supported.rb +2 -0
  160. data/lib/mongoid/errors/invalid_collection.rb +2 -0
  161. data/lib/mongoid/errors/invalid_config_option.rb +2 -0
  162. data/lib/mongoid/errors/invalid_dependent_strategy.rb +2 -0
  163. data/lib/mongoid/errors/invalid_field.rb +2 -0
  164. data/lib/mongoid/errors/invalid_field_option.rb +2 -0
  165. data/lib/mongoid/errors/invalid_find.rb +2 -0
  166. data/lib/mongoid/errors/invalid_includes.rb +2 -0
  167. data/lib/mongoid/errors/invalid_index.rb +2 -0
  168. data/lib/mongoid/errors/invalid_options.rb +4 -2
  169. data/lib/mongoid/errors/invalid_path.rb +2 -0
  170. data/lib/mongoid/errors/invalid_persistence_option.rb +2 -0
  171. data/lib/mongoid/errors/invalid_relation.rb +4 -2
  172. data/lib/mongoid/errors/invalid_relation_option.rb +4 -2
  173. data/lib/mongoid/errors/invalid_scope.rb +2 -0
  174. data/lib/mongoid/errors/invalid_session_use.rb +2 -0
  175. data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +6 -4
  176. data/lib/mongoid/errors/invalid_storage_options.rb +2 -0
  177. data/lib/mongoid/errors/invalid_storage_parent.rb +2 -0
  178. data/lib/mongoid/errors/invalid_time.rb +2 -0
  179. data/lib/mongoid/errors/invalid_value.rb +2 -0
  180. data/lib/mongoid/errors/inverse_not_found.rb +3 -1
  181. data/lib/mongoid/errors/mixed_client_configuration.rb +2 -0
  182. data/lib/mongoid/errors/mixed_relations.rb +2 -0
  183. data/lib/mongoid/errors/mongoid_error.rb +2 -0
  184. data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +3 -1
  185. data/lib/mongoid/errors/no_client_config.rb +4 -2
  186. data/lib/mongoid/errors/no_client_database.rb +2 -0
  187. data/lib/mongoid/errors/no_client_hosts.rb +2 -0
  188. data/lib/mongoid/errors/no_clients_config.rb +2 -0
  189. data/lib/mongoid/errors/no_default_client.rb +3 -1
  190. data/lib/mongoid/errors/no_environment.rb +2 -0
  191. data/lib/mongoid/errors/no_map_reduce_output.rb +2 -0
  192. data/lib/mongoid/errors/no_metadata.rb +2 -0
  193. data/lib/mongoid/errors/no_parent.rb +2 -0
  194. data/lib/mongoid/errors/readonly_attribute.rb +2 -0
  195. data/lib/mongoid/errors/readonly_document.rb +2 -0
  196. data/lib/mongoid/errors/scope_overwrite.rb +2 -0
  197. data/lib/mongoid/errors/too_many_nested_attribute_records.rb +3 -0
  198. data/lib/mongoid/errors/unknown_attribute.rb +2 -0
  199. data/lib/mongoid/errors/unknown_model.rb +2 -0
  200. data/lib/mongoid/errors/unsaved_document.rb +2 -0
  201. data/lib/mongoid/errors/unsupported_javascript.rb +2 -0
  202. data/lib/mongoid/errors/validations.rb +2 -0
  203. data/lib/mongoid/evolvable.rb +3 -1
  204. data/lib/mongoid/extensions.rb +2 -0
  205. data/lib/mongoid/extensions/array.rb +23 -6
  206. data/lib/mongoid/extensions/big_decimal.rb +2 -0
  207. data/lib/mongoid/extensions/boolean.rb +2 -0
  208. data/lib/mongoid/extensions/date.rb +13 -3
  209. data/lib/mongoid/extensions/date_time.rb +4 -3
  210. data/lib/mongoid/extensions/decimal128.rb +2 -0
  211. data/lib/mongoid/extensions/false_class.rb +2 -0
  212. data/lib/mongoid/extensions/float.rb +5 -3
  213. data/lib/mongoid/extensions/hash.rb +47 -7
  214. data/lib/mongoid/extensions/integer.rb +5 -3
  215. data/lib/mongoid/extensions/module.rb +2 -0
  216. data/lib/mongoid/extensions/nil_class.rb +2 -0
  217. data/lib/mongoid/extensions/object.rb +16 -4
  218. data/lib/mongoid/extensions/object_id.rb +2 -0
  219. data/lib/mongoid/extensions/range.rb +2 -0
  220. data/lib/mongoid/extensions/regexp.rb +2 -0
  221. data/lib/mongoid/extensions/set.rb +2 -0
  222. data/lib/mongoid/extensions/string.rb +18 -9
  223. data/lib/mongoid/extensions/symbol.rb +2 -0
  224. data/lib/mongoid/extensions/time.rb +14 -0
  225. data/lib/mongoid/extensions/time_with_zone.rb +14 -0
  226. data/lib/mongoid/extensions/true_class.rb +2 -0
  227. data/lib/mongoid/factory.rb +28 -5
  228. data/lib/mongoid/fields.rb +3 -1
  229. data/lib/mongoid/fields/foreign_key.rb +3 -1
  230. data/lib/mongoid/fields/localized.rb +2 -0
  231. data/lib/mongoid/fields/standard.rb +6 -3
  232. data/lib/mongoid/fields/validators.rb +2 -0
  233. data/lib/mongoid/fields/validators/macro.rb +16 -2
  234. data/lib/mongoid/findable.rb +9 -4
  235. data/lib/mongoid/indexable.rb +3 -1
  236. data/lib/mongoid/indexable/specification.rb +3 -1
  237. data/lib/mongoid/indexable/validators/options.rb +2 -0
  238. data/lib/mongoid/inspectable.rb +3 -1
  239. data/lib/mongoid/interceptable.rb +9 -3
  240. data/lib/mongoid/loggable.rb +13 -7
  241. data/lib/mongoid/matchable.rb +2 -0
  242. data/lib/mongoid/matchable/all.rb +2 -0
  243. data/lib/mongoid/matchable/and.rb +2 -0
  244. data/lib/mongoid/matchable/default.rb +2 -0
  245. data/lib/mongoid/matchable/elem_match.rb +2 -0
  246. data/lib/mongoid/matchable/eq.rb +1 -0
  247. data/lib/mongoid/matchable/exists.rb +2 -0
  248. data/lib/mongoid/matchable/gt.rb +2 -0
  249. data/lib/mongoid/matchable/gte.rb +2 -0
  250. data/lib/mongoid/matchable/in.rb +2 -0
  251. data/lib/mongoid/matchable/lt.rb +2 -0
  252. data/lib/mongoid/matchable/lte.rb +2 -0
  253. data/lib/mongoid/matchable/ne.rb +2 -0
  254. data/lib/mongoid/matchable/nin.rb +2 -0
  255. data/lib/mongoid/matchable/nor.rb +2 -1
  256. data/lib/mongoid/matchable/or.rb +2 -0
  257. data/lib/mongoid/matchable/regexp.rb +3 -0
  258. data/lib/mongoid/matchable/size.rb +2 -0
  259. data/lib/mongoid/persistable.rb +133 -15
  260. data/lib/mongoid/persistable/creatable.rb +3 -1
  261. data/lib/mongoid/persistable/deletable.rb +3 -1
  262. data/lib/mongoid/persistable/destroyable.rb +3 -1
  263. data/lib/mongoid/persistable/incrementable.rb +6 -2
  264. data/lib/mongoid/persistable/logical.rb +4 -1
  265. data/lib/mongoid/persistable/poppable.rb +3 -1
  266. data/lib/mongoid/persistable/pullable.rb +3 -1
  267. data/lib/mongoid/persistable/pushable.rb +3 -1
  268. data/lib/mongoid/persistable/renamable.rb +10 -3
  269. data/lib/mongoid/persistable/savable.rb +3 -1
  270. data/lib/mongoid/persistable/settable.rb +3 -1
  271. data/lib/mongoid/persistable/unsettable.rb +8 -3
  272. data/lib/mongoid/persistable/updatable.rb +3 -1
  273. data/lib/mongoid/persistable/upsertable.rb +3 -1
  274. data/lib/mongoid/persistence_context.rb +21 -9
  275. data/lib/mongoid/positional.rb +2 -0
  276. data/lib/mongoid/query_cache.rb +8 -8
  277. data/lib/mongoid/railtie.rb +3 -1
  278. data/lib/mongoid/railties/controller_runtime.rb +4 -1
  279. data/lib/mongoid/railties/database.rake +9 -0
  280. data/lib/mongoid/reloadable.rb +4 -2
  281. data/lib/mongoid/scopable.rb +2 -1
  282. data/lib/mongoid/selectable.rb +3 -1
  283. data/lib/mongoid/serializable.rb +23 -13
  284. data/lib/mongoid/shardable.rb +59 -5
  285. data/lib/mongoid/stateful.rb +3 -1
  286. data/lib/mongoid/tasks/database.rake +12 -5
  287. data/lib/mongoid/tasks/database.rb +85 -0
  288. data/lib/mongoid/threaded.rb +2 -0
  289. data/lib/mongoid/threaded/lifecycle.rb +2 -0
  290. data/lib/mongoid/timestamps.rb +3 -1
  291. data/lib/mongoid/timestamps/created.rb +3 -1
  292. data/lib/mongoid/timestamps/created/short.rb +2 -0
  293. data/lib/mongoid/timestamps/short.rb +2 -0
  294. data/lib/mongoid/timestamps/timeless.rb +6 -2
  295. data/lib/mongoid/timestamps/updated.rb +3 -1
  296. data/lib/mongoid/timestamps/updated/short.rb +2 -0
  297. data/lib/mongoid/touchable.rb +20 -12
  298. data/lib/mongoid/traversable.rb +4 -2
  299. data/lib/mongoid/validatable.rb +7 -5
  300. data/lib/mongoid/validatable/associated.rb +4 -2
  301. data/lib/mongoid/validatable/format.rb +2 -0
  302. data/lib/mongoid/validatable/length.rb +2 -0
  303. data/lib/mongoid/validatable/localizable.rb +2 -0
  304. data/lib/mongoid/validatable/macros.rb +2 -0
  305. data/lib/mongoid/validatable/presence.rb +4 -2
  306. data/lib/mongoid/validatable/queryable.rb +2 -0
  307. data/lib/mongoid/validatable/uniqueness.rb +4 -2
  308. data/lib/mongoid/version.rb +2 -1
  309. data/lib/rails/generators/mongoid/config/config_generator.rb +2 -0
  310. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +44 -29
  311. data/lib/rails/generators/mongoid/model/model_generator.rb +3 -1
  312. data/lib/rails/generators/mongoid_generator.rb +2 -0
  313. data/lib/rails/mongoid.rb +4 -2
  314. data/lib/support/ruby_version.rb +3 -0
  315. data/spec/app/models/account.rb +3 -0
  316. data/spec/app/models/acolyte.rb +3 -0
  317. data/spec/app/models/actor.rb +3 -0
  318. data/spec/app/models/actress.rb +3 -0
  319. data/spec/app/models/address.rb +3 -0
  320. data/spec/app/models/address_component.rb +3 -0
  321. data/spec/app/models/address_number.rb +3 -0
  322. data/spec/app/models/agency.rb +3 -0
  323. data/spec/app/models/agent.rb +3 -0
  324. data/spec/app/models/album.rb +3 -0
  325. data/spec/app/models/alert.rb +3 -0
  326. data/spec/app/models/animal.rb +3 -0
  327. data/spec/app/models/answer.rb +3 -0
  328. data/spec/app/models/appointment.rb +3 -0
  329. data/spec/app/models/array_field.rb +1 -0
  330. data/spec/app/models/article.rb +3 -0
  331. data/spec/app/models/artist.rb +3 -0
  332. data/spec/app/models/artwork.rb +3 -0
  333. data/spec/app/models/audio.rb +3 -0
  334. data/spec/app/models/augmentation.rb +3 -0
  335. data/spec/app/models/author.rb +3 -0
  336. data/spec/app/models/baby.rb +3 -0
  337. data/spec/app/models/band.rb +3 -0
  338. data/spec/app/models/bar.rb +3 -0
  339. data/spec/app/models/basic.rb +3 -0
  340. data/spec/app/models/bed.rb +3 -0
  341. data/spec/app/models/big_palette.rb +3 -0
  342. data/spec/app/models/birthday.rb +3 -0
  343. data/spec/app/models/bomb.rb +3 -0
  344. data/spec/app/models/book.rb +3 -0
  345. data/spec/app/models/breed.rb +3 -0
  346. data/spec/app/models/browser.rb +3 -0
  347. data/spec/app/models/building.rb +3 -0
  348. data/spec/app/models/building_address.rb +3 -0
  349. data/spec/app/models/bus.rb +3 -0
  350. data/spec/app/models/business.rb +3 -0
  351. data/spec/app/models/callback_test.rb +3 -0
  352. data/spec/app/models/canvas.rb +3 -0
  353. data/spec/app/models/car.rb +3 -0
  354. data/spec/app/models/cat.rb +3 -0
  355. data/spec/app/models/category.rb +3 -0
  356. data/spec/app/models/child.rb +3 -0
  357. data/spec/app/models/child_doc.rb +3 -0
  358. data/spec/app/models/church.rb +3 -0
  359. data/spec/app/models/circle.rb +3 -0
  360. data/spec/app/models/circuit.rb +3 -0
  361. data/spec/app/models/circus.rb +3 -0
  362. data/spec/app/models/code.rb +3 -0
  363. data/spec/app/models/coding.rb +4 -0
  364. data/spec/app/models/coding/pull_request.rb +12 -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 +4 -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 +4 -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/publication.rb +5 -0
  472. data/spec/app/models/publication/encyclopedia.rb +12 -0
  473. data/spec/app/models/publication/review.rb +14 -0
  474. data/spec/app/models/purchase.rb +3 -0
  475. data/spec/app/models/question.rb +3 -0
  476. data/spec/app/models/quiz.rb +3 -0
  477. data/spec/app/models/rating.rb +3 -0
  478. data/spec/app/models/record.rb +3 -0
  479. data/spec/app/models/registry.rb +3 -0
  480. data/spec/app/models/role.rb +3 -0
  481. data/spec/app/models/root_category.rb +3 -0
  482. data/spec/app/models/sandwich.rb +3 -0
  483. data/spec/app/models/scheduler.rb +3 -0
  484. data/spec/app/models/seo.rb +3 -0
  485. data/spec/app/models/series.rb +3 -0
  486. data/spec/app/models/server.rb +3 -0
  487. data/spec/app/models/service.rb +3 -0
  488. data/spec/app/models/shape.rb +3 -0
  489. data/spec/app/models/shelf.rb +3 -0
  490. data/spec/app/models/shipment_address.rb +3 -0
  491. data/spec/app/models/shipping_container.rb +3 -0
  492. data/spec/app/models/shipping_pack.rb +3 -0
  493. data/spec/app/models/shop.rb +3 -0
  494. data/spec/app/models/short_agent.rb +3 -0
  495. data/spec/app/models/short_quiz.rb +3 -0
  496. data/spec/app/models/simple.rb +3 -0
  497. data/spec/app/models/slave.rb +3 -0
  498. data/spec/app/models/song.rb +3 -0
  499. data/spec/app/models/sound.rb +3 -0
  500. data/spec/app/models/square.rb +3 -0
  501. data/spec/app/models/staff.rb +3 -0
  502. data/spec/app/models/store_as_dup_test1.rb +3 -0
  503. data/spec/app/models/store_as_dup_test2.rb +3 -0
  504. data/spec/app/models/store_as_dup_test3.rb +1 -0
  505. data/spec/app/models/store_as_dup_test4.rb +1 -0
  506. data/spec/app/models/strategy.rb +3 -0
  507. data/spec/app/models/sub_item.rb +3 -0
  508. data/spec/app/models/subscription.rb +3 -0
  509. data/spec/app/models/survey.rb +3 -0
  510. data/spec/app/models/symptom.rb +3 -0
  511. data/spec/app/models/tag.rb +3 -0
  512. data/spec/app/models/target.rb +3 -0
  513. data/spec/app/models/template.rb +3 -0
  514. data/spec/app/models/thing.rb +3 -0
  515. data/spec/app/models/title.rb +3 -0
  516. data/spec/app/models/tool.rb +3 -0
  517. data/spec/app/models/topping.rb +3 -0
  518. data/spec/app/models/track.rb +3 -0
  519. data/spec/app/models/translation.rb +3 -0
  520. data/spec/app/models/tree.rb +3 -0
  521. data/spec/app/models/truck.rb +3 -0
  522. data/spec/app/models/updatable.rb +1 -0
  523. data/spec/app/models/user.rb +3 -0
  524. data/spec/app/models/user_account.rb +3 -0
  525. data/spec/app/models/validation_callback.rb +3 -0
  526. data/spec/app/models/vehicle.rb +3 -0
  527. data/spec/app/models/version.rb +3 -0
  528. data/spec/app/models/vertex.rb +4 -1
  529. data/spec/app/models/vet_visit.rb +3 -0
  530. data/spec/app/models/video.rb +3 -0
  531. data/spec/app/models/video_game.rb +3 -0
  532. data/spec/app/models/weapon.rb +3 -0
  533. data/spec/app/models/wiki_page.rb +3 -0
  534. data/spec/app/models/word.rb +3 -0
  535. data/spec/app/models/word_origin.rb +3 -0
  536. data/spec/app/models/writer.rb +3 -0
  537. data/spec/config/mongoid.yml +1 -0
  538. data/spec/integration/app_spec.rb +76 -14
  539. data/spec/integration/associations/belongs_to_spec.rb +3 -0
  540. data/spec/integration/associations/embedded_spec.rb +113 -0
  541. data/spec/integration/associations/foreign_key_spec.rb +99 -0
  542. data/spec/integration/associations/foreign_key_spec_models.rb +65 -0
  543. data/spec/integration/associations/has_many_spec.rb +34 -0
  544. data/spec/integration/associations/has_one_spec.rb +34 -0
  545. data/spec/integration/associations/reverse_population_spec.rb +35 -0
  546. data/spec/integration/associations/reverse_population_spec_models.rb +37 -0
  547. data/spec/integration/bson_regexp_raw_spec.rb +20 -0
  548. data/spec/integration/criteria/default_scope_spec.rb +21 -0
  549. data/spec/integration/criteria/logical_spec.rb +94 -0
  550. data/spec/integration/i18n_fallbacks_spec.rb +90 -0
  551. data/spec/integration/shardable_spec.rb +149 -0
  552. data/spec/lite_spec_helper.rb +9 -1
  553. data/spec/mongoid/association/accessors_spec.rb +241 -63
  554. data/spec/mongoid/association/auto_save_spec.rb +3 -0
  555. data/spec/mongoid/association/builders_spec.rb +3 -0
  556. data/spec/mongoid/association/constrainable_spec.rb +3 -0
  557. data/spec/mongoid/association/counter_cache_spec.rb +3 -0
  558. data/spec/mongoid/association/depending_spec.rb +3 -0
  559. data/spec/mongoid/association/eager_spec.rb +3 -0
  560. data/spec/mongoid/association/embedded/cyclic_spec.rb +3 -0
  561. data/spec/mongoid/association/embedded/dirty_spec.rb +3 -0
  562. data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +3 -0
  563. data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +3 -0
  564. data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +3 -0
  565. data/spec/mongoid/association/embedded/embedded_in_spec.rb +4 -1
  566. data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +3 -0
  567. data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +3 -0
  568. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +3 -0
  569. data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +52 -0
  570. data/spec/mongoid/association/embedded/embeds_many_spec.rb +4 -1
  571. data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +3 -0
  572. data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +3 -0
  573. data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +3 -0
  574. data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +3 -0
  575. data/spec/mongoid/association/embedded/embeds_one_models.rb +3 -0
  576. data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +29 -0
  577. data/spec/mongoid/association/embedded/embeds_one_spec.rb +4 -1
  578. data/spec/mongoid/association/macros_spec.rb +3 -0
  579. data/spec/mongoid/association/nested/many_spec.rb +3 -0
  580. data/spec/mongoid/association/nested/one_spec.rb +3 -0
  581. data/spec/mongoid/association/options_spec.rb +3 -0
  582. data/spec/mongoid/association/polymorphic_spec.rb +3 -0
  583. data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +3 -0
  584. data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +3 -0
  585. data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +205 -10
  586. data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +3 -0
  587. data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +38 -0
  588. data/spec/mongoid/association/referenced/belongs_to_spec.rb +3 -0
  589. data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +3 -0
  590. data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +3 -0
  591. data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +16 -0
  592. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +26 -5
  593. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +37 -14
  594. data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +26 -2
  595. data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +40 -0
  596. data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +26 -2
  597. data/spec/mongoid/association/referenced/has_many/binding_spec.rb +3 -0
  598. data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +3 -0
  599. data/spec/mongoid/association/referenced/has_many/eager_spec.rb +18 -3
  600. data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +3 -0
  601. data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +1 -0
  602. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +3 -0
  603. data/spec/mongoid/association/referenced/has_many_models.rb +3 -0
  604. data/spec/mongoid/association/referenced/has_many_query_spec.rb +38 -0
  605. data/spec/mongoid/association/referenced/has_many_spec.rb +3 -0
  606. data/spec/mongoid/association/referenced/has_one/binding_spec.rb +3 -0
  607. data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +3 -0
  608. data/spec/mongoid/association/referenced/has_one/eager_spec.rb +18 -3
  609. data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +3 -0
  610. data/spec/mongoid/association/referenced/has_one_models.rb +3 -0
  611. data/spec/mongoid/association/referenced/has_one_query_spec.rb +38 -0
  612. data/spec/mongoid/association/referenced/has_one_spec.rb +3 -0
  613. data/spec/mongoid/association/reflections_spec.rb +3 -0
  614. data/spec/mongoid/association/syncable_spec.rb +3 -0
  615. data/spec/mongoid/association_spec.rb +3 -0
  616. data/spec/mongoid/atomic/modifiers_spec.rb +3 -0
  617. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +3 -0
  618. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +3 -0
  619. data/spec/mongoid/atomic/paths/root_spec.rb +3 -0
  620. data/spec/mongoid/atomic/paths_spec.rb +3 -0
  621. data/spec/mongoid/atomic_spec.rb +3 -0
  622. data/spec/mongoid/attributes/nested_spec.rb +3 -0
  623. data/spec/mongoid/attributes/readonly_spec.rb +3 -0
  624. data/spec/mongoid/attributes_spec.rb +3 -0
  625. data/spec/mongoid/cacheable_spec.rb +3 -0
  626. data/spec/mongoid/changeable_spec.rb +26 -0
  627. data/spec/mongoid/clients/factory_spec.rb +46 -28
  628. data/spec/mongoid/clients/options_spec.rb +31 -20
  629. data/spec/mongoid/clients/sessions_spec.rb +3 -0
  630. data/spec/mongoid/clients/transactions_spec.rb +6 -3
  631. data/spec/mongoid/clients_spec.rb +3 -0
  632. data/spec/mongoid/composable_spec.rb +3 -0
  633. data/spec/mongoid/config/environment_spec.rb +3 -0
  634. data/spec/mongoid/config/options_spec.rb +23 -3
  635. data/spec/mongoid/config_spec.rb +39 -0
  636. data/spec/mongoid/contextual/aggregable/memory_spec.rb +3 -0
  637. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +3 -0
  638. data/spec/mongoid/contextual/atomic_spec.rb +100 -0
  639. data/spec/mongoid/contextual/geo_near_spec.rb +3 -0
  640. data/spec/mongoid/contextual/map_reduce_spec.rb +3 -0
  641. data/spec/mongoid/contextual/memory_spec.rb +3 -0
  642. data/spec/mongoid/contextual/mongo_spec.rb +5 -0
  643. data/spec/mongoid/contextual/none_spec.rb +3 -0
  644. data/spec/mongoid/copyable_spec.rb +3 -0
  645. data/spec/mongoid/copyable_spec_models.rb +3 -0
  646. data/spec/mongoid/criteria/findable_spec.rb +58 -0
  647. data/spec/mongoid/criteria/inspectable_spec.rb +3 -0
  648. data/spec/mongoid/criteria/marshalable_spec.rb +3 -0
  649. data/spec/mongoid/criteria/modifiable_spec.rb +7 -3
  650. data/spec/mongoid/criteria/options_spec.rb +3 -0
  651. data/spec/mongoid/criteria/queryable/aggregable_spec.rb +3 -0
  652. data/spec/mongoid/criteria/queryable/expandable_spec.rb +135 -0
  653. data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +3 -0
  654. data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +3 -0
  655. data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +3 -0
  656. data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +3 -0
  657. data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +3 -0
  658. data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +36 -17
  659. data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +3 -0
  660. data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +3 -0
  661. data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +3 -0
  662. data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +3 -0
  663. data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +3 -0
  664. data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +3 -0
  665. data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +3 -0
  666. data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +4 -1
  667. data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +3 -0
  668. data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +3 -0
  669. data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +3 -0
  670. data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +3 -0
  671. data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +24 -16
  672. data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +3 -0
  673. data/spec/mongoid/criteria/queryable/key_spec.rb +3 -0
  674. data/spec/mongoid/criteria/queryable/mergeable_spec.rb +48 -12
  675. data/spec/mongoid/criteria/queryable/optional_spec.rb +3 -0
  676. data/spec/mongoid/criteria/queryable/options_spec.rb +3 -0
  677. data/spec/mongoid/criteria/queryable/pipeline_spec.rb +3 -0
  678. data/spec/mongoid/criteria/queryable/queryable_spec.rb +3 -0
  679. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +1348 -281
  680. data/spec/mongoid/criteria/queryable/selectable_spec.rb +996 -2159
  681. data/spec/mongoid/criteria/queryable/selector_spec.rb +3 -0
  682. data/spec/mongoid/criteria/queryable/smash_spec.rb +3 -0
  683. data/spec/mongoid/criteria/queryable/storable_spec.rb +190 -0
  684. data/spec/mongoid/criteria/scopable_spec.rb +3 -0
  685. data/spec/mongoid/criteria_spec.rb +69 -0
  686. data/spec/mongoid/document_query_spec.rb +39 -0
  687. data/spec/mongoid/document_spec.rb +3 -0
  688. data/spec/mongoid/equality_spec.rb +3 -0
  689. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +6 -3
  690. data/spec/mongoid/errors/callback_spec.rb +3 -0
  691. data/spec/mongoid/errors/delete_restriction_spec.rb +3 -0
  692. data/spec/mongoid/errors/document_not_destroyed_spec.rb +3 -0
  693. data/spec/mongoid/errors/document_not_found_spec.rb +3 -0
  694. data/spec/mongoid/errors/eager_load_spec.rb +3 -0
  695. data/spec/mongoid/errors/invalid_collection_spec.rb +3 -0
  696. data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -0
  697. data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -0
  698. data/spec/mongoid/errors/invalid_field_spec.rb +3 -0
  699. data/spec/mongoid/errors/invalid_find_spec.rb +3 -0
  700. data/spec/mongoid/errors/invalid_includes_spec.rb +3 -0
  701. data/spec/mongoid/errors/invalid_index_spec.rb +3 -0
  702. data/spec/mongoid/errors/invalid_options_spec.rb +5 -2
  703. data/spec/mongoid/errors/invalid_path_spec.rb +3 -0
  704. data/spec/mongoid/errors/invalid_relation_spec.rb +5 -2
  705. data/spec/mongoid/errors/invalid_scope_spec.rb +3 -0
  706. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -0
  707. data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -0
  708. data/spec/mongoid/errors/invalid_time_spec.rb +3 -0
  709. data/spec/mongoid/errors/inverse_not_found_spec.rb +4 -1
  710. data/spec/mongoid/errors/mixed_client_configuration_spec.rb +3 -0
  711. data/spec/mongoid/errors/mixed_relations_spec.rb +3 -0
  712. data/spec/mongoid/errors/mongoid_error_spec.rb +3 -0
  713. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +6 -3
  714. data/spec/mongoid/errors/no_client_config_spec.rb +5 -2
  715. data/spec/mongoid/errors/no_client_database_spec.rb +6 -3
  716. data/spec/mongoid/errors/no_client_hosts_spec.rb +6 -3
  717. data/spec/mongoid/errors/no_clients_config_spec.rb +3 -0
  718. data/spec/mongoid/errors/no_environment_spec.rb +3 -0
  719. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -0
  720. data/spec/mongoid/errors/no_metadata_spec.rb +5 -2
  721. data/spec/mongoid/errors/no_parent_spec.rb +4 -1
  722. data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -0
  723. data/spec/mongoid/errors/readonly_document_spec.rb +3 -0
  724. data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -0
  725. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -0
  726. data/spec/mongoid/errors/unknown_attribute_spec.rb +3 -0
  727. data/spec/mongoid/errors/unsaved_document_spec.rb +4 -1
  728. data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -0
  729. data/spec/mongoid/errors/validations_spec.rb +3 -0
  730. data/spec/mongoid/extensions/array_spec.rb +26 -43
  731. data/spec/mongoid/extensions/big_decimal_spec.rb +3 -0
  732. data/spec/mongoid/extensions/binary_spec.rb +3 -0
  733. data/spec/mongoid/extensions/boolean_spec.rb +3 -0
  734. data/spec/mongoid/extensions/date_class_mongoize_spec.rb +336 -0
  735. data/spec/mongoid/extensions/date_spec.rb +9 -160
  736. data/spec/mongoid/extensions/date_time_spec.rb +18 -60
  737. data/spec/mongoid/extensions/decimal128_spec.rb +3 -0
  738. data/spec/mongoid/extensions/false_class_spec.rb +3 -0
  739. data/spec/mongoid/extensions/float_spec.rb +18 -3
  740. data/spec/mongoid/extensions/hash_spec.rb +106 -0
  741. data/spec/mongoid/extensions/integer_spec.rb +15 -2
  742. data/spec/mongoid/extensions/module_spec.rb +3 -0
  743. data/spec/mongoid/extensions/nil_class_spec.rb +3 -0
  744. data/spec/mongoid/extensions/object_id_spec.rb +3 -0
  745. data/spec/mongoid/extensions/object_spec.rb +14 -24
  746. data/spec/mongoid/extensions/range_spec.rb +3 -0
  747. data/spec/mongoid/extensions/regexp_spec.rb +3 -0
  748. data/spec/mongoid/extensions/set_spec.rb +3 -0
  749. data/spec/mongoid/extensions/string_spec.rb +60 -26
  750. data/spec/mongoid/extensions/symbol_spec.rb +3 -0
  751. data/spec/mongoid/extensions/time_spec.rb +30 -0
  752. data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -0
  753. data/spec/mongoid/extensions/true_class_spec.rb +3 -0
  754. data/spec/mongoid/extensions_spec.rb +3 -0
  755. data/spec/mongoid/factory_spec.rb +27 -0
  756. data/spec/mongoid/fields/foreign_key_spec.rb +3 -0
  757. data/spec/mongoid/fields/localized_spec.rb +3 -0
  758. data/spec/mongoid/fields/standard_spec.rb +3 -0
  759. data/spec/mongoid/fields_spec.rb +41 -0
  760. data/spec/mongoid/findable_spec.rb +3 -0
  761. data/spec/mongoid/indexable/specification_spec.rb +3 -0
  762. data/spec/mongoid/indexable_spec.rb +3 -0
  763. data/spec/mongoid/inspectable_spec.rb +3 -0
  764. data/spec/mongoid/interceptable_spec.rb +65 -0
  765. data/spec/mongoid/interceptable_spec_models.rb +76 -0
  766. data/spec/mongoid/loggable_spec.rb +3 -0
  767. data/spec/mongoid/matchable/all_spec.rb +3 -0
  768. data/spec/mongoid/matchable/and_spec.rb +3 -0
  769. data/spec/mongoid/matchable/default_spec.rb +3 -0
  770. data/spec/mongoid/matchable/elem_match_spec.rb +3 -0
  771. data/spec/mongoid/matchable/eq_spec.rb +1 -0
  772. data/spec/mongoid/matchable/exists_spec.rb +3 -0
  773. data/spec/mongoid/matchable/gt_spec.rb +3 -0
  774. data/spec/mongoid/matchable/gte_spec.rb +3 -0
  775. data/spec/mongoid/matchable/in_spec.rb +3 -0
  776. data/spec/mongoid/matchable/lt_spec.rb +3 -0
  777. data/spec/mongoid/matchable/lte_spec.rb +3 -0
  778. data/spec/mongoid/matchable/ne_spec.rb +3 -0
  779. data/spec/mongoid/matchable/nin_spec.rb +3 -0
  780. data/spec/mongoid/matchable/nor_spec.rb +1 -0
  781. data/spec/mongoid/matchable/or_spec.rb +3 -0
  782. data/spec/mongoid/matchable/regexp_spec.rb +3 -0
  783. data/spec/mongoid/matchable/size_spec.rb +3 -0
  784. data/spec/mongoid/matchable_spec.rb +3 -0
  785. data/spec/mongoid/persistable/creatable_spec.rb +3 -0
  786. data/spec/mongoid/persistable/deletable_spec.rb +3 -0
  787. data/spec/mongoid/persistable/destroyable_spec.rb +3 -0
  788. data/spec/mongoid/persistable/incrementable_spec.rb +17 -0
  789. data/spec/mongoid/persistable/logical_spec.rb +17 -0
  790. data/spec/mongoid/persistable/poppable_spec.rb +17 -0
  791. data/spec/mongoid/persistable/pullable_spec.rb +31 -0
  792. data/spec/mongoid/persistable/pushable_spec.rb +31 -0
  793. data/spec/mongoid/persistable/renamable_spec.rb +17 -0
  794. data/spec/mongoid/persistable/savable_spec.rb +3 -0
  795. data/spec/mongoid/persistable/settable_spec.rb +17 -0
  796. data/spec/mongoid/persistable/unsettable_spec.rb +17 -0
  797. data/spec/mongoid/persistable/updatable_spec.rb +3 -0
  798. data/spec/mongoid/persistable/upsertable_spec.rb +3 -0
  799. data/spec/mongoid/persistable_spec.rb +85 -8
  800. data/spec/mongoid/persistence_context_spec.rb +3 -0
  801. data/spec/mongoid/positional_spec.rb +3 -0
  802. data/spec/mongoid/query_cache_middleware_spec.rb +48 -0
  803. data/spec/mongoid/query_cache_spec.rb +3 -44
  804. data/spec/mongoid/relations/proxy_spec.rb +3 -0
  805. data/spec/mongoid/reloadable_spec.rb +3 -0
  806. data/spec/mongoid/scopable_spec.rb +3 -0
  807. data/spec/mongoid/selectable_spec.rb +3 -0
  808. data/spec/mongoid/serializable_spec.rb +132 -18
  809. data/spec/mongoid/shardable_models.rb +61 -0
  810. data/spec/mongoid/shardable_spec.rb +72 -16
  811. data/spec/mongoid/stateful_spec.rb +3 -0
  812. data/spec/mongoid/tasks/database_rake_spec.rb +3 -0
  813. data/spec/mongoid/tasks/database_spec.rb +3 -0
  814. data/spec/mongoid/threaded_spec.rb +3 -0
  815. data/spec/mongoid/timestamps/created/short_spec.rb +3 -0
  816. data/spec/mongoid/timestamps/created_spec.rb +3 -0
  817. data/spec/mongoid/timestamps/timeless_spec.rb +3 -0
  818. data/spec/mongoid/timestamps/updated/short_spec.rb +3 -0
  819. data/spec/mongoid/timestamps/updated_spec.rb +3 -0
  820. data/spec/mongoid/timestamps_spec.rb +3 -0
  821. data/spec/mongoid/touchable_spec.rb +49 -3
  822. data/spec/mongoid/traversable_spec.rb +3 -0
  823. data/spec/mongoid/validatable/associated_spec.rb +3 -0
  824. data/spec/mongoid/validatable/format_spec.rb +3 -0
  825. data/spec/mongoid/validatable/length_spec.rb +3 -0
  826. data/spec/mongoid/validatable/numericality_spec.rb +3 -0
  827. data/spec/mongoid/validatable/presence_spec.rb +3 -0
  828. data/spec/mongoid/validatable/uniqueness_spec.rb +3 -0
  829. data/spec/mongoid/validatable_spec.rb +3 -0
  830. data/spec/mongoid_spec.rb +3 -0
  831. data/spec/rails/controller_extension/controller_runtime_spec.rb +4 -1
  832. data/spec/rails/mongoid_spec.rb +5 -2
  833. data/spec/spec_helper.rb +21 -13
  834. data/spec/support/authorization.rb +3 -0
  835. data/spec/support/constraints.rb +0 -16
  836. data/spec/support/expectations.rb +6 -1
  837. data/spec/support/helpers.rb +11 -0
  838. data/spec/support/lite_constraints.rb +22 -0
  839. data/spec/support/macros.rb +1 -0
  840. data/spec/support/shared/time.rb +54 -0
  841. data/spec/support/spec_config.rb +5 -2
  842. metadata +71 -5
  843. metadata.gz.sig +1 -2
  844. data/lib/mongoid/criteria/queryable/forwardable.rb +0 -65
  845. data/spec/mongoid/criteria/queryable/forwardable_spec.rb +0 -87
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
 
4
- # This module contains the behaviour for getting the various states a
6
+ # This module contains the behavior for getting the various states a
5
7
  # document can transition through.
6
8
  module Stateful
7
9
 
@@ -1,29 +1,36 @@
1
+ # frozen_string_literal: true
2
+
1
3
  namespace :db do
2
4
  namespace :mongoid do
3
5
  task :load_models do
4
6
  end
5
7
 
6
- desc "Create the indexes defined on your mongoid models"
8
+ desc "Create indexes specified in Mongoid models"
7
9
  task :create_indexes => [:environment, :load_models] do
8
10
  ::Mongoid::Tasks::Database.create_indexes
9
11
  end
10
12
 
11
- desc "Remove indexes that exist in the database but aren't specified on the models"
13
+ desc "Remove indexes that exist in the database but are not specified in Mongoid models"
12
14
  task :remove_undefined_indexes => [:environment, :load_models] do
13
15
  ::Mongoid::Tasks::Database.remove_undefined_indexes
14
16
  end
15
17
 
16
- desc "Remove the indexes defined on your mongoid models without questions!"
18
+ desc "Remove indexes specified in Mongoid models"
17
19
  task :remove_indexes => [:environment, :load_models] do
18
20
  ::Mongoid::Tasks::Database.remove_indexes
19
21
  end
20
22
 
21
- desc "Drops the default client database"
23
+ desc "Shard collections with shard keys specified in Mongoid models"
24
+ task :shard_collections => [:environment, :load_models] do
25
+ ::Mongoid::Tasks::Database.shard_collections
26
+ end
27
+
28
+ desc "Drop the database of the default Mongoid client"
22
29
  task :drop => :environment do
23
30
  ::Mongoid::Clients.default.database.drop
24
31
  end
25
32
 
26
- desc "Drop all collections except the system collections"
33
+ desc "Drop all non-system collections"
27
34
  task :purge => :environment do
28
35
  ::Mongoid.purge!
29
36
  end
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  module Tasks
4
6
  module Database
@@ -106,6 +108,89 @@ module Mongoid
106
108
  end.compact
107
109
  end
108
110
 
111
+ # Shard collections for models that declare shard keys.
112
+ #
113
+ # Returns the model classes that have had their collections sharded,
114
+ # including model classes whose collections had already been sharded
115
+ # prior to the invocation of this method.
116
+ #
117
+ # @example Shard all collections
118
+ # Mongoid::Tasks::Database.shard_collections
119
+ #
120
+ # @return [ Array<Class> ] The sharded models
121
+ def shard_collections(models = ::Mongoid.models)
122
+ models.map do |model|
123
+ next if model.shard_config.nil?
124
+
125
+ if model.embedded? && !model.cyclic?
126
+ logger.warn("MONGOID: #{model} has shard config but is emdedded")
127
+ next
128
+ end
129
+
130
+ unless model.collection.cluster.sharded?
131
+ logger.warn("MONGOID: #{model} has shard config but is not persisted in a sharded cluster: #{model.collection.cluster.summary}")
132
+ next
133
+ end
134
+
135
+ # Database of the collection must exist in order to run collStats.
136
+ # Depending on server version, the collection itself must also
137
+ # exist.
138
+ # MongoDB does not have a command to create the database; the best
139
+ # approximation of it is to create the collection we want.
140
+ # On older servers, creating a collection that already exists is
141
+ # an error.
142
+ # Additionally, 3.6 and potentially older servers do not provide
143
+ # the error code when they are asked to collStats a non-existent
144
+ # collection (https://jira.mongodb.org/browse/SERVER-50070).
145
+ begin
146
+ stats = model.collection.database.command(collStats: model.collection.name).first
147
+ rescue Mongo::Error::OperationFailure => exc
148
+ # Code 26 is database does not exist.
149
+ # Code 8 is collection does not exist, as of 4.0.
150
+ # On 3.6 and earlier match the text of exception message.
151
+ if exc.code == 26 || exc.code == 8 ||
152
+ exc.code.nil? && exc.message =~ /not found/
153
+ then
154
+ model.collection.create
155
+
156
+ stats = model.collection.database.command(collStats: model.collection.name).first
157
+ else
158
+ raise
159
+ end
160
+ end
161
+
162
+ stats = model.collection.database.command(collStats: model.collection.name).first
163
+ if stats[:sharded]
164
+ logger.info("MONGOID: #{model.collection.namespace} is already sharded for #{model}")
165
+ next model
166
+ end
167
+
168
+ admin_db = model.collection.client.use(:admin).database
169
+
170
+ begin
171
+ admin_db.command(enableSharding: model.collection.database.name)
172
+ rescue Mongo::Error::OperationFailure => exc
173
+ # Server 2.6 fails if sharding is already enabled
174
+ if exc.code == 23 || exc.code.nil? && exc.message =~ /already enabled/
175
+ # Nothing
176
+ else
177
+ raise
178
+ end
179
+ end
180
+
181
+ begin
182
+ admin_db.command(shardCollection: model.collection.namespace, **model.shard_config)
183
+ rescue Mongo::Error::OperationFailure => e
184
+ logger.error("MONGOID: Failed to shard collection #{model.collection.namespace} for #{model}: #{e.class}: #{e}")
185
+ next
186
+ end
187
+
188
+ logger.info("MONGOID: Sharded collection #{model.collection.namespace} for #{model}")
189
+
190
+ model
191
+ end.compact
192
+ end
193
+
109
194
  private
110
195
 
111
196
  def logger
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  require "mongoid/threaded/lifecycle"
3
5
 
4
6
  module Mongoid
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  module Threaded
4
6
  BIND = 'bind'.freeze
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  require "mongoid/timestamps/timeless"
3
5
  require "mongoid/timestamps/created"
4
6
  require "mongoid/timestamps/updated"
@@ -6,7 +8,7 @@ require "mongoid/timestamps/short"
6
8
 
7
9
  module Mongoid
8
10
 
9
- # This module handles the behaviour for setting up document created at and
11
+ # This module handles the behavior for setting up document created at and
10
12
  # updated at timestamps.
11
13
  module Timestamps
12
14
  extend ActiveSupport::Concern
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  require "mongoid/timestamps/created/short"
3
5
 
4
6
  module Mongoid
5
7
  module Timestamps
6
- # This module handles the behaviour for setting up document created at
8
+ # This module handles the behavior for setting up document created at
7
9
  # timestamp.
8
10
  module Created
9
11
  extend ActiveSupport::Concern
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  module Timestamps
4
6
  module Created
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  module Timestamps
4
6
  module Short
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  module Timestamps
4
6
 
5
- # This module adds behaviour for turning off timestamping in single or
7
+ # This module adds behavior for turning off timestamping in single or
6
8
  # multiple calls.
7
9
  module Timeless
8
10
  extend ActiveSupport::Concern
@@ -42,11 +44,13 @@ module Mongoid
42
44
  end
43
45
 
44
46
  class << self
47
+ extend Forwardable
45
48
 
46
49
  def timeless_table
47
50
  Thread.current['[mongoid]:timeless'] ||= Hash.new
48
51
  end
49
- delegate :[]=, :[], to: :timeless_table
52
+
53
+ def_delegators :timeless_table, :[]=, :[]
50
54
  end
51
55
 
52
56
  private
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  require "mongoid/timestamps/updated/short"
3
5
 
4
6
  module Mongoid
5
7
  module Timestamps
6
- # This module handles the behaviour for setting up document updated at
8
+ # This module handles the behavior for setting up document updated at
7
9
  # timestamp.
8
10
  module Updated
9
11
  extend ActiveSupport::Concern
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  module Timestamps
4
6
  module Updated
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  # encoding: utf-8
3
+
3
4
  module Mongoid
4
5
  module Touchable
5
6
 
@@ -7,7 +8,7 @@ module Mongoid
7
8
 
8
9
  # Touch the document, in effect updating its updated_at timestamp and
9
10
  # optionally the provided field to the current time. If any belongs_to
10
- # relations exist with a touch option, they will be updated as well.
11
+ # associations exist with a touch option, they will be updated as well.
11
12
  #
12
13
  # @example Update the updated_at timestamp.
13
14
  # document.touch
@@ -15,7 +16,7 @@ module Mongoid
15
16
  # @example Update the updated_at and provided timestamps.
16
17
  # document.touch(:audited)
17
18
  #
18
- # @note This will not autobuild relations if those options are set.
19
+ # @note This will not autobuild associations if those options are set.
19
20
  #
20
21
  # @param [ Symbol ] field The name of an additional field to update.
21
22
  #
@@ -41,7 +42,7 @@ module Mongoid
41
42
 
42
43
  extend self
43
44
 
44
- # Add the association to the touchable relations if the touch option was
45
+ # Add the association to the touchable associations if the touch option was
45
46
  # provided.
46
47
  #
47
48
  # @example Add the touchable.
@@ -65,15 +66,15 @@ module Mongoid
65
66
  private
66
67
 
67
68
  # Define the method that will get called for touching belongs_to
68
- # relations.
69
+ # associations.
69
70
  #
70
71
  # @api private
71
72
  #
72
- # @example Define the touch relation.
73
+ # @example Define the touch association.
73
74
  # Model.define_relation_touch_method(:band)
74
75
  # Model.define_relation_touch_method(:band, :band_updated_at)
75
76
  #
76
- # @param [ Symbol ] name The name of the relation.
77
+ # @param [ Symbol ] name The name of the association.
77
78
  # @param [ Association ] association The association metadata.
78
79
  #
79
80
  # @since 3.1.0
@@ -88,14 +89,21 @@ module Mongoid
88
89
 
89
90
  relation_classes.each { |c| c.send(:include, InstanceMethods) }
90
91
  method_name = "touch_#{name}_after_create_or_destroy"
91
- association.inverse_class.class_eval <<-TOUCH, __FILE__, __LINE__ + 1
92
- def #{method_name}
93
- without_autobuild do
94
- relation = __send__(:#{name})
95
- relation.touch #{":#{association.touch_field}" if association.touch_field} if relation
92
+ association.inverse_class.class_eval do
93
+ define_method(method_name) do
94
+ without_autobuild do
95
+ if relation = __send__(name)
96
+ if association.touch_field
97
+ # Note that this looks up touch_field at runtime, rather than
98
+ # at method definition time.
99
+ relation.touch association.touch_field
100
+ else
101
+ relation.touch
102
+ end
96
103
  end
97
104
  end
98
- TOUCH
105
+ end
106
+ end
99
107
  method_name.to_sym
100
108
  end
101
109
  end
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
 
4
- # Provides behaviour around traversing the document graph.
6
+ # Provides behavior around traversing the document graph.
5
7
  #
6
8
  # @since 4.0.0
7
9
  module Traversable
@@ -181,7 +183,7 @@ module Mongoid
181
183
  end
182
184
 
183
185
  # When inheriting, we want to copy the fields from the parent class and
184
- # set the on the child to start, mimicking the behaviour of the old
186
+ # set the on the child to start, mimicking the behavior of the old
185
187
  # class_inheritable_accessor that was deprecated in Rails edge.
186
188
  #
187
189
  # @example Inherit from this class.
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  require "mongoid/validatable/macros"
3
5
  require "mongoid/validatable/localizable"
4
6
  require "mongoid/validatable/associated"
@@ -54,16 +56,16 @@ module Mongoid
54
56
  options[:validate].nil? ? true : options[:validate]
55
57
  end
56
58
 
57
- # Overrides the default ActiveModel behaviour since we need to handle
58
- # validations of relations slightly different than just calling the
59
+ # Overrides the default ActiveModel behavior since we need to handle
60
+ # validations of associations slightly different than just calling the
59
61
  # getter.
60
62
  #
61
63
  # @example Read the value.
62
64
  # person.read_attribute_for_validation(:addresses)
63
65
  #
64
- # @param [ Symbol ] attr The name of the field or relation.
66
+ # @param [ Symbol ] attr The name of the field or association.
65
67
  #
66
- # @return [ Object ] The value of the field or the relation.
68
+ # @return [ Object ] The value of the field or the association.
67
69
  #
68
70
  # @since 2.0.0.rc.1
69
71
  def read_attribute_for_validation(attr)
@@ -123,7 +125,7 @@ module Mongoid
123
125
 
124
126
  module ClassMethods
125
127
 
126
- # Adds an associated validator for the relation if the validate option
128
+ # Adds an associated validator for the association if the validate option
127
129
  # was not provided or set to true.
128
130
  #
129
131
  # @example Set up validation.
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  module Validatable
4
6
 
@@ -24,8 +26,8 @@ module Mongoid
24
26
  # validator.validate_each(document, :name, name)
25
27
  #
26
28
  # @param [ Document ] document The document to validate.
27
- # @param [ Symbol ] attribute The relation to validate.
28
- # @param [ Object ] value The value of the relation.
29
+ # @param [ Symbol ] attribute The association to validate.
30
+ # @param [ Object ] value The value of the association.
29
31
  #
30
32
  # @since 2.0.0
31
33
  def validate_each(document, attribute, value)
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  module Validatable
4
6
 
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  module Validatable
4
6
 
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  module Validatable
4
6
 
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  module Validatable
4
6
  module Macros
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  # encoding: utf-8
3
+
2
4
  module Mongoid
3
5
  module Validatable
4
6
 
@@ -46,11 +48,11 @@ module Mongoid
46
48
 
47
49
  private
48
50
 
49
- # Returns true if the relation is blank or the foreign key is blank.
51
+ # Returns true if the association is blank or the foreign key is blank.
50
52
  #
51
53
  # @api private
52
54
  #
53
- # @example Check is the relation or fk is blank.
55
+ # @example Check is the association or fk is blank.
54
56
  # validator.relation_or_fk_mising(doc, :name, "")
55
57
  #
56
58
  # @param [ Document ] doc The document.