activerecord 6.1.7 → 7.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +520 -1385
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +31 -31
  5. data/examples/performance.rb +2 -2
  6. data/lib/active_record/aggregations.rb +17 -14
  7. data/lib/active_record/association_relation.rb +2 -12
  8. data/lib/active_record/associations/alias_tracker.rb +25 -19
  9. data/lib/active_record/associations/association.rb +60 -21
  10. data/lib/active_record/associations/association_scope.rb +17 -12
  11. data/lib/active_record/associations/belongs_to_association.rb +37 -11
  12. data/lib/active_record/associations/belongs_to_polymorphic_association.rb +13 -4
  13. data/lib/active_record/associations/builder/association.rb +11 -5
  14. data/lib/active_record/associations/builder/belongs_to.rb +41 -14
  15. data/lib/active_record/associations/builder/collection_association.rb +10 -3
  16. data/lib/active_record/associations/builder/has_and_belongs_to_many.rb +3 -7
  17. data/lib/active_record/associations/builder/has_many.rb +4 -4
  18. data/lib/active_record/associations/builder/has_one.rb +4 -4
  19. data/lib/active_record/associations/builder/singular_association.rb +6 -2
  20. data/lib/active_record/associations/collection_association.rb +46 -36
  21. data/lib/active_record/associations/collection_proxy.rb +44 -16
  22. data/lib/active_record/associations/disable_joins_association_scope.rb +59 -0
  23. data/lib/active_record/associations/errors.rb +265 -0
  24. data/lib/active_record/associations/foreign_association.rb +10 -3
  25. data/lib/active_record/associations/has_many_association.rb +29 -19
  26. data/lib/active_record/associations/has_many_through_association.rb +12 -7
  27. data/lib/active_record/associations/has_one_association.rb +20 -10
  28. data/lib/active_record/associations/has_one_through_association.rb +1 -1
  29. data/lib/active_record/associations/join_dependency/join_association.rb +27 -25
  30. data/lib/active_record/associations/join_dependency.rb +23 -15
  31. data/lib/active_record/associations/nested_error.rb +47 -0
  32. data/lib/active_record/associations/preloader/association.rb +212 -53
  33. data/lib/active_record/associations/preloader/batch.rb +48 -0
  34. data/lib/active_record/associations/preloader/branch.rb +153 -0
  35. data/lib/active_record/associations/preloader/through_association.rb +50 -16
  36. data/lib/active_record/associations/preloader.rb +50 -121
  37. data/lib/active_record/associations/singular_association.rb +15 -3
  38. data/lib/active_record/associations/through_association.rb +25 -14
  39. data/lib/active_record/associations.rb +404 -509
  40. data/lib/active_record/asynchronous_queries_tracker.rb +60 -0
  41. data/lib/active_record/attribute_assignment.rb +2 -14
  42. data/lib/active_record/attribute_methods/before_type_cast.rb +24 -2
  43. data/lib/active_record/attribute_methods/composite_primary_key.rb +84 -0
  44. data/lib/active_record/attribute_methods/dirty.rb +73 -22
  45. data/lib/active_record/attribute_methods/primary_key.rb +47 -27
  46. data/lib/active_record/attribute_methods/query.rb +31 -19
  47. data/lib/active_record/attribute_methods/read.rb +14 -11
  48. data/lib/active_record/attribute_methods/serialization.rb +174 -37
  49. data/lib/active_record/attribute_methods/time_zone_conversion.rb +11 -9
  50. data/lib/active_record/attribute_methods/write.rb +12 -15
  51. data/lib/active_record/attribute_methods.rb +164 -52
  52. data/lib/active_record/attributes.rb +51 -49
  53. data/lib/active_record/autosave_association.rb +74 -57
  54. data/lib/active_record/base.rb +27 -5
  55. data/lib/active_record/callbacks.rb +18 -34
  56. data/lib/active_record/coders/column_serializer.rb +61 -0
  57. data/lib/active_record/coders/json.rb +1 -1
  58. data/lib/active_record/coders/yaml_column.rb +70 -46
  59. data/lib/active_record/connection_adapters/abstract/connection_handler.rb +284 -0
  60. data/lib/active_record/connection_adapters/abstract/connection_pool/queue.rb +211 -0
  61. data/lib/active_record/connection_adapters/abstract/connection_pool/reaper.rb +79 -0
  62. data/lib/active_record/connection_adapters/abstract/connection_pool.rb +327 -612
  63. data/lib/active_record/connection_adapters/abstract/database_limits.rb +5 -17
  64. data/lib/active_record/connection_adapters/abstract/database_statements.rb +199 -60
  65. data/lib/active_record/connection_adapters/abstract/query_cache.rb +201 -64
  66. data/lib/active_record/connection_adapters/abstract/quoting.rb +119 -131
  67. data/lib/active_record/connection_adapters/abstract/savepoints.rb +4 -3
  68. data/lib/active_record/connection_adapters/abstract/schema_creation.rb +21 -20
  69. data/lib/active_record/connection_adapters/abstract/schema_definitions.rb +186 -31
  70. data/lib/active_record/connection_adapters/abstract/schema_dumper.rb +14 -1
  71. data/lib/active_record/connection_adapters/abstract/schema_statements.rb +377 -142
  72. data/lib/active_record/connection_adapters/abstract/transaction.rb +361 -76
  73. data/lib/active_record/connection_adapters/abstract_adapter.rb +624 -163
  74. data/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +345 -166
  75. data/lib/active_record/connection_adapters/column.rb +13 -0
  76. data/lib/active_record/connection_adapters/mysql/column.rb +1 -0
  77. data/lib/active_record/connection_adapters/mysql/database_statements.rb +29 -130
  78. data/lib/active_record/connection_adapters/mysql/quoting.rb +81 -55
  79. data/lib/active_record/connection_adapters/mysql/schema_creation.rb +9 -0
  80. data/lib/active_record/connection_adapters/mysql/schema_definitions.rb +10 -1
  81. data/lib/active_record/connection_adapters/mysql/schema_dumper.rb +8 -2
  82. data/lib/active_record/connection_adapters/mysql/schema_statements.rb +45 -14
  83. data/lib/active_record/connection_adapters/mysql2/database_statements.rb +152 -0
  84. data/lib/active_record/connection_adapters/mysql2_adapter.rb +107 -68
  85. data/lib/active_record/connection_adapters/pool_config.rb +26 -16
  86. data/lib/active_record/connection_adapters/pool_manager.rb +19 -9
  87. data/lib/active_record/connection_adapters/postgresql/column.rb +30 -1
  88. data/lib/active_record/connection_adapters/postgresql/database_statements.rb +114 -54
  89. data/lib/active_record/connection_adapters/postgresql/oid/array.rb +1 -1
  90. data/lib/active_record/connection_adapters/postgresql/oid/cidr.rb +6 -0
  91. data/lib/active_record/connection_adapters/postgresql/oid/date.rb +8 -0
  92. data/lib/active_record/connection_adapters/postgresql/oid/date_time.rb +5 -0
  93. data/lib/active_record/connection_adapters/postgresql/oid/hstore.rb +53 -14
  94. data/lib/active_record/connection_adapters/postgresql/oid/interval.rb +1 -1
  95. data/lib/active_record/connection_adapters/postgresql/oid/money.rb +3 -2
  96. data/lib/active_record/connection_adapters/postgresql/oid/range.rb +12 -3
  97. data/lib/active_record/connection_adapters/postgresql/oid/timestamp.rb +15 -0
  98. data/lib/active_record/connection_adapters/postgresql/oid/timestamp_with_time_zone.rb +30 -0
  99. data/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb +18 -6
  100. data/lib/active_record/connection_adapters/postgresql/oid/uuid.rb +14 -4
  101. data/lib/active_record/connection_adapters/postgresql/oid.rb +2 -0
  102. data/lib/active_record/connection_adapters/postgresql/quoting.rb +137 -104
  103. data/lib/active_record/connection_adapters/postgresql/referential_integrity.rb +28 -0
  104. data/lib/active_record/connection_adapters/postgresql/schema_creation.rb +92 -2
  105. data/lib/active_record/connection_adapters/postgresql/schema_definitions.rb +173 -3
  106. data/lib/active_record/connection_adapters/postgresql/schema_dumper.rb +78 -0
  107. data/lib/active_record/connection_adapters/postgresql/schema_statements.rb +401 -77
  108. data/lib/active_record/connection_adapters/postgresql/utils.rb +9 -10
  109. data/lib/active_record/connection_adapters/postgresql_adapter.rb +518 -251
  110. data/lib/active_record/connection_adapters/schema_cache.rb +326 -102
  111. data/lib/active_record/connection_adapters/sqlite3/column.rb +62 -0
  112. data/lib/active_record/connection_adapters/sqlite3/database_statements.rb +78 -55
  113. data/lib/active_record/connection_adapters/sqlite3/quoting.rb +68 -54
  114. data/lib/active_record/connection_adapters/sqlite3/schema_creation.rb +22 -0
  115. data/lib/active_record/connection_adapters/sqlite3/schema_definitions.rb +20 -0
  116. data/lib/active_record/connection_adapters/sqlite3/schema_dumper.rb +16 -0
  117. data/lib/active_record/connection_adapters/sqlite3/schema_statements.rb +66 -22
  118. data/lib/active_record/connection_adapters/sqlite3_adapter.rb +372 -130
  119. data/lib/active_record/connection_adapters/statement_pool.rb +7 -0
  120. data/lib/active_record/connection_adapters/trilogy/database_statements.rb +99 -0
  121. data/lib/active_record/connection_adapters/trilogy_adapter.rb +229 -0
  122. data/lib/active_record/connection_adapters.rb +130 -6
  123. data/lib/active_record/connection_handling.rb +132 -146
  124. data/lib/active_record/core.rb +276 -251
  125. data/lib/active_record/counter_cache.rb +68 -34
  126. data/lib/active_record/database_configurations/connection_url_resolver.rb +9 -3
  127. data/lib/active_record/database_configurations/database_config.rb +34 -10
  128. data/lib/active_record/database_configurations/hash_config.rb +107 -31
  129. data/lib/active_record/database_configurations/url_config.rb +38 -13
  130. data/lib/active_record/database_configurations.rb +96 -60
  131. data/lib/active_record/delegated_type.rb +90 -20
  132. data/lib/active_record/deprecator.rb +7 -0
  133. data/lib/active_record/destroy_association_async_job.rb +4 -2
  134. data/lib/active_record/disable_joins_association_relation.rb +39 -0
  135. data/lib/active_record/dynamic_matchers.rb +3 -3
  136. data/lib/active_record/encryption/auto_filtered_parameters.rb +66 -0
  137. data/lib/active_record/encryption/cipher/aes256_gcm.rb +101 -0
  138. data/lib/active_record/encryption/cipher.rb +53 -0
  139. data/lib/active_record/encryption/config.rb +68 -0
  140. data/lib/active_record/encryption/configurable.rb +60 -0
  141. data/lib/active_record/encryption/context.rb +42 -0
  142. data/lib/active_record/encryption/contexts.rb +76 -0
  143. data/lib/active_record/encryption/derived_secret_key_provider.rb +18 -0
  144. data/lib/active_record/encryption/deterministic_key_provider.rb +14 -0
  145. data/lib/active_record/encryption/encryptable_record.rb +230 -0
  146. data/lib/active_record/encryption/encrypted_attribute_type.rb +175 -0
  147. data/lib/active_record/encryption/encrypted_fixtures.rb +38 -0
  148. data/lib/active_record/encryption/encrypting_only_encryptor.rb +12 -0
  149. data/lib/active_record/encryption/encryptor.rb +170 -0
  150. data/lib/active_record/encryption/envelope_encryption_key_provider.rb +55 -0
  151. data/lib/active_record/encryption/errors.rb +15 -0
  152. data/lib/active_record/encryption/extended_deterministic_queries.rb +157 -0
  153. data/lib/active_record/encryption/extended_deterministic_uniqueness_validator.rb +28 -0
  154. data/lib/active_record/encryption/key.rb +28 -0
  155. data/lib/active_record/encryption/key_generator.rb +53 -0
  156. data/lib/active_record/encryption/key_provider.rb +46 -0
  157. data/lib/active_record/encryption/message.rb +33 -0
  158. data/lib/active_record/encryption/message_pack_message_serializer.rb +76 -0
  159. data/lib/active_record/encryption/message_serializer.rb +96 -0
  160. data/lib/active_record/encryption/null_encryptor.rb +25 -0
  161. data/lib/active_record/encryption/properties.rb +76 -0
  162. data/lib/active_record/encryption/read_only_null_encryptor.rb +28 -0
  163. data/lib/active_record/encryption/scheme.rb +100 -0
  164. data/lib/active_record/encryption.rb +56 -0
  165. data/lib/active_record/enum.rb +163 -63
  166. data/lib/active_record/errors.rb +210 -27
  167. data/lib/active_record/explain.rb +21 -12
  168. data/lib/active_record/explain_registry.rb +11 -6
  169. data/lib/active_record/explain_subscriber.rb +1 -1
  170. data/lib/active_record/fixture_set/file.rb +15 -1
  171. data/lib/active_record/fixture_set/model_metadata.rb +14 -4
  172. data/lib/active_record/fixture_set/render_context.rb +2 -0
  173. data/lib/active_record/fixture_set/table_row.rb +70 -14
  174. data/lib/active_record/fixture_set/table_rows.rb +4 -4
  175. data/lib/active_record/fixtures.rb +179 -112
  176. data/lib/active_record/future_result.rb +178 -0
  177. data/lib/active_record/gem_version.rb +4 -4
  178. data/lib/active_record/inheritance.rb +85 -31
  179. data/lib/active_record/insert_all.rb +148 -32
  180. data/lib/active_record/integration.rb +14 -10
  181. data/lib/active_record/internal_metadata.rb +123 -23
  182. data/lib/active_record/legacy_yaml_adapter.rb +2 -39
  183. data/lib/active_record/locking/optimistic.rb +43 -27
  184. data/lib/active_record/locking/pessimistic.rb +15 -6
  185. data/lib/active_record/log_subscriber.rb +41 -29
  186. data/lib/active_record/marshalling.rb +56 -0
  187. data/lib/active_record/message_pack.rb +124 -0
  188. data/lib/active_record/middleware/database_selector/resolver.rb +10 -10
  189. data/lib/active_record/middleware/database_selector.rb +23 -13
  190. data/lib/active_record/middleware/shard_selector.rb +62 -0
  191. data/lib/active_record/migration/command_recorder.rb +113 -16
  192. data/lib/active_record/migration/compatibility.rb +235 -46
  193. data/lib/active_record/migration/default_strategy.rb +22 -0
  194. data/lib/active_record/migration/execution_strategy.rb +19 -0
  195. data/lib/active_record/migration/join_table.rb +1 -1
  196. data/lib/active_record/migration/pending_migration_connection.rb +21 -0
  197. data/lib/active_record/migration.rb +374 -177
  198. data/lib/active_record/model_schema.rb +143 -159
  199. data/lib/active_record/nested_attributes.rb +48 -21
  200. data/lib/active_record/no_touching.rb +3 -3
  201. data/lib/active_record/normalization.rb +163 -0
  202. data/lib/active_record/persistence.rb +282 -283
  203. data/lib/active_record/promise.rb +84 -0
  204. data/lib/active_record/query_cache.rb +19 -25
  205. data/lib/active_record/query_logs.rb +189 -0
  206. data/lib/active_record/query_logs_formatter.rb +41 -0
  207. data/lib/active_record/querying.rb +44 -9
  208. data/lib/active_record/railtie.rb +234 -71
  209. data/lib/active_record/railties/controller_runtime.rb +25 -11
  210. data/lib/active_record/railties/databases.rake +189 -256
  211. data/lib/active_record/railties/job_runtime.rb +23 -0
  212. data/lib/active_record/readonly_attributes.rb +41 -3
  213. data/lib/active_record/reflection.rb +325 -103
  214. data/lib/active_record/relation/batches/batch_enumerator.rb +38 -9
  215. data/lib/active_record/relation/batches.rb +198 -63
  216. data/lib/active_record/relation/calculations.rb +300 -111
  217. data/lib/active_record/relation/delegation.rb +33 -22
  218. data/lib/active_record/relation/finder_methods.rb +123 -52
  219. data/lib/active_record/relation/merger.rb +26 -19
  220. data/lib/active_record/relation/predicate_builder/array_handler.rb +2 -2
  221. data/lib/active_record/relation/predicate_builder/association_query_value.rb +38 -4
  222. data/lib/active_record/relation/predicate_builder/polymorphic_array_value.rb +10 -7
  223. data/lib/active_record/relation/predicate_builder/relation_handler.rb +5 -1
  224. data/lib/active_record/relation/predicate_builder.rb +29 -22
  225. data/lib/active_record/relation/query_attribute.rb +30 -12
  226. data/lib/active_record/relation/query_methods.rb +842 -150
  227. data/lib/active_record/relation/record_fetch_warning.rb +10 -9
  228. data/lib/active_record/relation/spawn_methods.rb +7 -6
  229. data/lib/active_record/relation/where_clause.rb +15 -36
  230. data/lib/active_record/relation.rb +736 -145
  231. data/lib/active_record/result.rb +67 -54
  232. data/lib/active_record/runtime_registry.rb +71 -13
  233. data/lib/active_record/sanitization.rb +84 -34
  234. data/lib/active_record/schema.rb +39 -23
  235. data/lib/active_record/schema_dumper.rb +90 -31
  236. data/lib/active_record/schema_migration.rb +74 -23
  237. data/lib/active_record/scoping/default.rb +72 -15
  238. data/lib/active_record/scoping/named.rb +5 -13
  239. data/lib/active_record/scoping.rb +65 -34
  240. data/lib/active_record/secure_password.rb +60 -0
  241. data/lib/active_record/secure_token.rb +21 -3
  242. data/lib/active_record/serialization.rb +6 -1
  243. data/lib/active_record/signed_id.rb +30 -9
  244. data/lib/active_record/statement_cache.rb +7 -7
  245. data/lib/active_record/store.rb +10 -10
  246. data/lib/active_record/suppressor.rb +13 -15
  247. data/lib/active_record/table_metadata.rb +7 -3
  248. data/lib/active_record/tasks/database_tasks.rb +277 -149
  249. data/lib/active_record/tasks/mysql_database_tasks.rb +16 -7
  250. data/lib/active_record/tasks/postgresql_database_tasks.rb +35 -26
  251. data/lib/active_record/tasks/sqlite_database_tasks.rb +16 -7
  252. data/lib/active_record/test_databases.rb +1 -1
  253. data/lib/active_record/test_fixtures.rb +173 -155
  254. data/lib/active_record/testing/query_assertions.rb +121 -0
  255. data/lib/active_record/timestamp.rb +32 -19
  256. data/lib/active_record/token_for.rb +123 -0
  257. data/lib/active_record/touch_later.rb +12 -7
  258. data/lib/active_record/transaction.rb +132 -0
  259. data/lib/active_record/transactions.rb +118 -41
  260. data/lib/active_record/translation.rb +3 -5
  261. data/lib/active_record/type/adapter_specific_registry.rb +32 -14
  262. data/lib/active_record/type/hash_lookup_type_map.rb +34 -1
  263. data/lib/active_record/type/internal/timezone.rb +7 -2
  264. data/lib/active_record/type/serialized.rb +9 -7
  265. data/lib/active_record/type/time.rb +4 -0
  266. data/lib/active_record/type/type_map.rb +17 -20
  267. data/lib/active_record/type.rb +1 -2
  268. data/lib/active_record/type_caster/connection.rb +4 -4
  269. data/lib/active_record/validations/absence.rb +1 -1
  270. data/lib/active_record/validations/associated.rb +13 -7
  271. data/lib/active_record/validations/numericality.rb +5 -4
  272. data/lib/active_record/validations/presence.rb +5 -28
  273. data/lib/active_record/validations/uniqueness.rb +64 -15
  274. data/lib/active_record/validations.rb +12 -5
  275. data/lib/active_record/version.rb +1 -1
  276. data/lib/active_record.rb +444 -32
  277. data/lib/arel/alias_predication.rb +1 -1
  278. data/lib/arel/attributes/attribute.rb +0 -8
  279. data/lib/arel/collectors/bind.rb +2 -0
  280. data/lib/arel/collectors/composite.rb +7 -0
  281. data/lib/arel/collectors/sql_string.rb +1 -1
  282. data/lib/arel/collectors/substitute_binds.rb +1 -1
  283. data/lib/arel/crud.rb +28 -22
  284. data/lib/arel/delete_manager.rb +18 -4
  285. data/lib/arel/errors.rb +10 -0
  286. data/lib/arel/factory_methods.rb +4 -0
  287. data/lib/arel/filter_predications.rb +9 -0
  288. data/lib/arel/insert_manager.rb +2 -3
  289. data/lib/arel/nodes/binary.rb +6 -7
  290. data/lib/arel/nodes/bound_sql_literal.rb +65 -0
  291. data/lib/arel/nodes/casted.rb +1 -1
  292. data/lib/arel/nodes/cte.rb +36 -0
  293. data/lib/arel/nodes/delete_statement.rb +12 -13
  294. data/lib/arel/nodes/filter.rb +10 -0
  295. data/lib/arel/nodes/fragments.rb +35 -0
  296. data/lib/arel/nodes/function.rb +1 -0
  297. data/lib/arel/nodes/homogeneous_in.rb +1 -9
  298. data/lib/arel/nodes/insert_statement.rb +2 -2
  299. data/lib/arel/nodes/leading_join.rb +8 -0
  300. data/lib/arel/nodes/{and.rb → nary.rb} +9 -2
  301. data/lib/arel/nodes/node.rb +115 -5
  302. data/lib/arel/nodes/select_core.rb +2 -2
  303. data/lib/arel/nodes/select_statement.rb +2 -2
  304. data/lib/arel/nodes/sql_literal.rb +13 -0
  305. data/lib/arel/nodes/table_alias.rb +4 -0
  306. data/lib/arel/nodes/update_statement.rb +8 -3
  307. data/lib/arel/nodes.rb +7 -2
  308. data/lib/arel/predications.rb +14 -4
  309. data/lib/arel/select_manager.rb +11 -5
  310. data/lib/arel/table.rb +9 -6
  311. data/lib/arel/tree_manager.rb +8 -15
  312. data/lib/arel/update_manager.rb +20 -5
  313. data/lib/arel/visitors/dot.rb +81 -90
  314. data/lib/arel/visitors/mysql.rb +23 -5
  315. data/lib/arel/visitors/postgresql.rb +1 -22
  316. data/lib/arel/visitors/to_sql.rb +170 -36
  317. data/lib/arel/visitors/visitor.rb +2 -2
  318. data/lib/arel.rb +23 -4
  319. data/lib/rails/generators/active_record/application_record/USAGE +8 -0
  320. data/lib/rails/generators/active_record/application_record/templates/application_record.rb.tt +1 -1
  321. data/lib/rails/generators/active_record/migration/templates/create_table_migration.rb.tt +4 -1
  322. data/lib/rails/generators/active_record/migration.rb +3 -1
  323. data/lib/rails/generators/active_record/model/USAGE +113 -0
  324. data/lib/rails/generators/active_record/model/model_generator.rb +15 -6
  325. data/lib/rails/generators/active_record/model/templates/abstract_base_class.rb.tt +1 -1
  326. data/lib/rails/generators/active_record/model/templates/model.rb.tt +1 -1
  327. data/lib/rails/generators/active_record/model/templates/module.rb.tt +2 -2
  328. data/lib/rails/generators/active_record/multi_db/multi_db_generator.rb +16 -0
  329. data/lib/rails/generators/active_record/multi_db/templates/multi_db.rb.tt +44 -0
  330. metadata +100 -14
  331. data/lib/active_record/connection_adapters/legacy_pool_manager.rb +0 -35
  332. data/lib/active_record/null_relation.rb +0 -67
@@ -2,6 +2,6 @@
2
2
  class <%= abstract_class_name %> < ApplicationRecord
3
3
  self.abstract_class = true
4
4
 
5
- connects_to database: { <%= ActiveRecord::Base.writing_role %>: :<%= database -%> }
5
+ connects_to database: { <%= ActiveRecord.writing_role %>: :<%= database -%> }
6
6
  end
7
7
  <% end -%>
@@ -1,7 +1,7 @@
1
1
  <% module_namespacing do -%>
2
2
  class <%= class_name %> < <%= parent_class_name.classify %>
3
3
  <% attributes.select(&:reference?).each do |attribute| -%>
4
- belongs_to :<%= attribute.name %><%= ', polymorphic: true' if attribute.polymorphic? %>
4
+ belongs_to :<%= attribute.name %><%= ", polymorphic: true" if attribute.polymorphic? %>
5
5
  <% end -%>
6
6
  <% attributes.select(&:rich_text?).each do |attribute| -%>
7
7
  has_rich_text :<%= attribute.name %>
@@ -1,7 +1,7 @@
1
1
  <% module_namespacing do -%>
2
- module <%= class_path.map(&:camelize).join('::') %>
2
+ module <%= class_path.map(&:camelize).join("::") %>
3
3
  def self.table_name_prefix
4
- '<%= namespaced? ? namespaced_class_path.join('_') : class_path.join('_') %>_'
4
+ "<%= namespaced? ? namespaced_class_path.join("_") : class_path.join("_") %>_"
5
5
  end
6
6
  end
7
7
  <% end -%>
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails/generators/active_record"
4
+
5
+ module ActiveRecord
6
+ module Generators # :nodoc:
7
+ class MultiDbGenerator < ::Rails::Generators::Base # :nodoc:
8
+ source_root File.expand_path("templates", __dir__)
9
+
10
+ def create_multi_db
11
+ filename = "multi_db.rb"
12
+ template filename, "config/initializers/#{filename}"
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,44 @@
1
+ # Multi-db Configuration
2
+ #
3
+ # This file is used for configuration settings related to multiple databases.
4
+ #
5
+ # Enable Database Selector
6
+ #
7
+ # Inserts middleware to perform automatic connection switching.
8
+ # The `database_selector` hash is used to pass options to the DatabaseSelector
9
+ # middleware. The `delay` is used to determine how long to wait after a write
10
+ # to send a subsequent read to the primary.
11
+ #
12
+ # The `database_resolver` class is used by the middleware to determine which
13
+ # database is appropriate to use based on the time delay.
14
+ #
15
+ # The `database_resolver_context` class is used by the middleware to set
16
+ # timestamps for the last write to the primary. The resolver uses the context
17
+ # class timestamps to determine how long to wait before reading from the
18
+ # replica.
19
+ #
20
+ # By default Rails will store a last write timestamp in the session. The
21
+ # DatabaseSelector middleware is designed as such you can define your own
22
+ # strategy for connection switching and pass that into the middleware through
23
+ # these configuration options.
24
+ #
25
+ # Rails.application.configure do
26
+ # config.active_record.database_selector = { delay: 2.seconds }
27
+ # config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver
28
+ # config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session
29
+ # end
30
+ #
31
+ # Enable Shard Selector
32
+ #
33
+ # Inserts middleware to perform automatic shard swapping. The `shard_selector` hash
34
+ # can be used to pass options to the `ShardSelector` middleware. The `lock` option is
35
+ # used to determine whether shard swapping should be prohibited for the request.
36
+ #
37
+ # The `shard_resolver` option is used by the middleware to determine which shard
38
+ # to switch to. The application must provide a mechanism for finding the shard name
39
+ # in a proc. See guides for an example.
40
+ #
41
+ # Rails.application.configure do
42
+ # config.active_record.shard_selector = { lock: true }
43
+ # config.active_record.shard_resolver = ->(request) { Tenant.find_by!(host: request.host).shard }
44
+ # end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.7
4
+ version: 7.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-09 00:00:00.000000000 Z
11
+ date: 2024-08-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,28 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 6.1.7
19
+ version: 7.2.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 6.1.7
26
+ version: 7.2.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activemodel
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 6.1.7
33
+ version: 7.2.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 6.1.7
40
+ version: 7.2.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: timeout
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 0.4.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 0.4.0
41
55
  description: Databases on Rails. Build a persistent domain model by mapping database
42
56
  tables to Ruby classes. Strong conventions for associations, validations, aggregations,
43
57
  migrations, and testing come baked-in.
@@ -70,6 +84,8 @@ files:
70
84
  - lib/active_record/associations/builder/singular_association.rb
71
85
  - lib/active_record/associations/collection_association.rb
72
86
  - lib/active_record/associations/collection_proxy.rb
87
+ - lib/active_record/associations/disable_joins_association_scope.rb
88
+ - lib/active_record/associations/errors.rb
73
89
  - lib/active_record/associations/foreign_association.rb
74
90
  - lib/active_record/associations/has_many_association.rb
75
91
  - lib/active_record/associations/has_many_through_association.rb
@@ -79,14 +95,19 @@ files:
79
95
  - lib/active_record/associations/join_dependency/join_association.rb
80
96
  - lib/active_record/associations/join_dependency/join_base.rb
81
97
  - lib/active_record/associations/join_dependency/join_part.rb
98
+ - lib/active_record/associations/nested_error.rb
82
99
  - lib/active_record/associations/preloader.rb
83
100
  - lib/active_record/associations/preloader/association.rb
101
+ - lib/active_record/associations/preloader/batch.rb
102
+ - lib/active_record/associations/preloader/branch.rb
84
103
  - lib/active_record/associations/preloader/through_association.rb
85
104
  - lib/active_record/associations/singular_association.rb
86
105
  - lib/active_record/associations/through_association.rb
106
+ - lib/active_record/asynchronous_queries_tracker.rb
87
107
  - lib/active_record/attribute_assignment.rb
88
108
  - lib/active_record/attribute_methods.rb
89
109
  - lib/active_record/attribute_methods/before_type_cast.rb
110
+ - lib/active_record/attribute_methods/composite_primary_key.rb
90
111
  - lib/active_record/attribute_methods/dirty.rb
91
112
  - lib/active_record/attribute_methods/primary_key.rb
92
113
  - lib/active_record/attribute_methods/query.rb
@@ -98,10 +119,14 @@ files:
98
119
  - lib/active_record/autosave_association.rb
99
120
  - lib/active_record/base.rb
100
121
  - lib/active_record/callbacks.rb
122
+ - lib/active_record/coders/column_serializer.rb
101
123
  - lib/active_record/coders/json.rb
102
124
  - lib/active_record/coders/yaml_column.rb
103
125
  - lib/active_record/connection_adapters.rb
126
+ - lib/active_record/connection_adapters/abstract/connection_handler.rb
104
127
  - lib/active_record/connection_adapters/abstract/connection_pool.rb
128
+ - lib/active_record/connection_adapters/abstract/connection_pool/queue.rb
129
+ - lib/active_record/connection_adapters/abstract/connection_pool/reaper.rb
105
130
  - lib/active_record/connection_adapters/abstract/database_limits.rb
106
131
  - lib/active_record/connection_adapters/abstract/database_statements.rb
107
132
  - lib/active_record/connection_adapters/abstract/query_cache.rb
@@ -116,7 +141,6 @@ files:
116
141
  - lib/active_record/connection_adapters/abstract_mysql_adapter.rb
117
142
  - lib/active_record/connection_adapters/column.rb
118
143
  - lib/active_record/connection_adapters/deduplicable.rb
119
- - lib/active_record/connection_adapters/legacy_pool_manager.rb
120
144
  - lib/active_record/connection_adapters/mysql/column.rb
121
145
  - lib/active_record/connection_adapters/mysql/database_statements.rb
122
146
  - lib/active_record/connection_adapters/mysql/explain_pretty_printer.rb
@@ -126,6 +150,7 @@ files:
126
150
  - lib/active_record/connection_adapters/mysql/schema_dumper.rb
127
151
  - lib/active_record/connection_adapters/mysql/schema_statements.rb
128
152
  - lib/active_record/connection_adapters/mysql/type_metadata.rb
153
+ - lib/active_record/connection_adapters/mysql2/database_statements.rb
129
154
  - lib/active_record/connection_adapters/mysql2_adapter.rb
130
155
  - lib/active_record/connection_adapters/pool_config.rb
131
156
  - lib/active_record/connection_adapters/pool_manager.rb
@@ -153,6 +178,8 @@ files:
153
178
  - lib/active_record/connection_adapters/postgresql/oid/point.rb
154
179
  - lib/active_record/connection_adapters/postgresql/oid/range.rb
155
180
  - lib/active_record/connection_adapters/postgresql/oid/specialized_string.rb
181
+ - lib/active_record/connection_adapters/postgresql/oid/timestamp.rb
182
+ - lib/active_record/connection_adapters/postgresql/oid/timestamp_with_time_zone.rb
156
183
  - lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb
157
184
  - lib/active_record/connection_adapters/postgresql/oid/uuid.rb
158
185
  - lib/active_record/connection_adapters/postgresql/oid/vector.rb
@@ -168,6 +195,7 @@ files:
168
195
  - lib/active_record/connection_adapters/postgresql_adapter.rb
169
196
  - lib/active_record/connection_adapters/schema_cache.rb
170
197
  - lib/active_record/connection_adapters/sql_type_metadata.rb
198
+ - lib/active_record/connection_adapters/sqlite3/column.rb
171
199
  - lib/active_record/connection_adapters/sqlite3/database_statements.rb
172
200
  - lib/active_record/connection_adapters/sqlite3/explain_pretty_printer.rb
173
201
  - lib/active_record/connection_adapters/sqlite3/quoting.rb
@@ -177,6 +205,8 @@ files:
177
205
  - lib/active_record/connection_adapters/sqlite3/schema_statements.rb
178
206
  - lib/active_record/connection_adapters/sqlite3_adapter.rb
179
207
  - lib/active_record/connection_adapters/statement_pool.rb
208
+ - lib/active_record/connection_adapters/trilogy/database_statements.rb
209
+ - lib/active_record/connection_adapters/trilogy_adapter.rb
180
210
  - lib/active_record/connection_handling.rb
181
211
  - lib/active_record/core.rb
182
212
  - lib/active_record/counter_cache.rb
@@ -186,8 +216,39 @@ files:
186
216
  - lib/active_record/database_configurations/hash_config.rb
187
217
  - lib/active_record/database_configurations/url_config.rb
188
218
  - lib/active_record/delegated_type.rb
219
+ - lib/active_record/deprecator.rb
189
220
  - lib/active_record/destroy_association_async_job.rb
221
+ - lib/active_record/disable_joins_association_relation.rb
190
222
  - lib/active_record/dynamic_matchers.rb
223
+ - lib/active_record/encryption.rb
224
+ - lib/active_record/encryption/auto_filtered_parameters.rb
225
+ - lib/active_record/encryption/cipher.rb
226
+ - lib/active_record/encryption/cipher/aes256_gcm.rb
227
+ - lib/active_record/encryption/config.rb
228
+ - lib/active_record/encryption/configurable.rb
229
+ - lib/active_record/encryption/context.rb
230
+ - lib/active_record/encryption/contexts.rb
231
+ - lib/active_record/encryption/derived_secret_key_provider.rb
232
+ - lib/active_record/encryption/deterministic_key_provider.rb
233
+ - lib/active_record/encryption/encryptable_record.rb
234
+ - lib/active_record/encryption/encrypted_attribute_type.rb
235
+ - lib/active_record/encryption/encrypted_fixtures.rb
236
+ - lib/active_record/encryption/encrypting_only_encryptor.rb
237
+ - lib/active_record/encryption/encryptor.rb
238
+ - lib/active_record/encryption/envelope_encryption_key_provider.rb
239
+ - lib/active_record/encryption/errors.rb
240
+ - lib/active_record/encryption/extended_deterministic_queries.rb
241
+ - lib/active_record/encryption/extended_deterministic_uniqueness_validator.rb
242
+ - lib/active_record/encryption/key.rb
243
+ - lib/active_record/encryption/key_generator.rb
244
+ - lib/active_record/encryption/key_provider.rb
245
+ - lib/active_record/encryption/message.rb
246
+ - lib/active_record/encryption/message_pack_message_serializer.rb
247
+ - lib/active_record/encryption/message_serializer.rb
248
+ - lib/active_record/encryption/null_encryptor.rb
249
+ - lib/active_record/encryption/properties.rb
250
+ - lib/active_record/encryption/read_only_null_encryptor.rb
251
+ - lib/active_record/encryption/scheme.rb
191
252
  - lib/active_record/enum.rb
192
253
  - lib/active_record/errors.rb
193
254
  - lib/active_record/explain.rb
@@ -199,6 +260,7 @@ files:
199
260
  - lib/active_record/fixture_set/table_row.rb
200
261
  - lib/active_record/fixture_set/table_rows.rb
201
262
  - lib/active_record/fixtures.rb
263
+ - lib/active_record/future_result.rb
202
264
  - lib/active_record/gem_version.rb
203
265
  - lib/active_record/inheritance.rb
204
266
  - lib/active_record/insert_all.rb
@@ -209,24 +271,34 @@ files:
209
271
  - lib/active_record/locking/optimistic.rb
210
272
  - lib/active_record/locking/pessimistic.rb
211
273
  - lib/active_record/log_subscriber.rb
274
+ - lib/active_record/marshalling.rb
275
+ - lib/active_record/message_pack.rb
212
276
  - lib/active_record/middleware/database_selector.rb
213
277
  - lib/active_record/middleware/database_selector/resolver.rb
214
278
  - lib/active_record/middleware/database_selector/resolver/session.rb
279
+ - lib/active_record/middleware/shard_selector.rb
215
280
  - lib/active_record/migration.rb
216
281
  - lib/active_record/migration/command_recorder.rb
217
282
  - lib/active_record/migration/compatibility.rb
283
+ - lib/active_record/migration/default_strategy.rb
284
+ - lib/active_record/migration/execution_strategy.rb
218
285
  - lib/active_record/migration/join_table.rb
286
+ - lib/active_record/migration/pending_migration_connection.rb
219
287
  - lib/active_record/model_schema.rb
220
288
  - lib/active_record/nested_attributes.rb
221
289
  - lib/active_record/no_touching.rb
222
- - lib/active_record/null_relation.rb
290
+ - lib/active_record/normalization.rb
223
291
  - lib/active_record/persistence.rb
292
+ - lib/active_record/promise.rb
224
293
  - lib/active_record/query_cache.rb
294
+ - lib/active_record/query_logs.rb
295
+ - lib/active_record/query_logs_formatter.rb
225
296
  - lib/active_record/querying.rb
226
297
  - lib/active_record/railtie.rb
227
298
  - lib/active_record/railties/console_sandbox.rb
228
299
  - lib/active_record/railties/controller_runtime.rb
229
300
  - lib/active_record/railties/databases.rake
301
+ - lib/active_record/railties/job_runtime.rb
230
302
  - lib/active_record/readonly_attributes.rb
231
303
  - lib/active_record/reflection.rb
232
304
  - lib/active_record/relation.rb
@@ -258,6 +330,7 @@ files:
258
330
  - lib/active_record/scoping.rb
259
331
  - lib/active_record/scoping/default.rb
260
332
  - lib/active_record/scoping/named.rb
333
+ - lib/active_record/secure_password.rb
261
334
  - lib/active_record/secure_token.rb
262
335
  - lib/active_record/serialization.rb
263
336
  - lib/active_record/signed_id.rb
@@ -271,8 +344,11 @@ files:
271
344
  - lib/active_record/tasks/sqlite_database_tasks.rb
272
345
  - lib/active_record/test_databases.rb
273
346
  - lib/active_record/test_fixtures.rb
347
+ - lib/active_record/testing/query_assertions.rb
274
348
  - lib/active_record/timestamp.rb
349
+ - lib/active_record/token_for.rb
275
350
  - lib/active_record/touch_later.rb
351
+ - lib/active_record/transaction.rb
276
352
  - lib/active_record/transactions.rb
277
353
  - lib/active_record/translation.rb
278
354
  - lib/active_record/type.rb
@@ -312,22 +388,26 @@ files:
312
388
  - lib/arel/errors.rb
313
389
  - lib/arel/expressions.rb
314
390
  - lib/arel/factory_methods.rb
391
+ - lib/arel/filter_predications.rb
315
392
  - lib/arel/insert_manager.rb
316
393
  - lib/arel/math.rb
317
394
  - lib/arel/nodes.rb
318
- - lib/arel/nodes/and.rb
319
395
  - lib/arel/nodes/ascending.rb
320
396
  - lib/arel/nodes/binary.rb
321
397
  - lib/arel/nodes/bind_param.rb
398
+ - lib/arel/nodes/bound_sql_literal.rb
322
399
  - lib/arel/nodes/case.rb
323
400
  - lib/arel/nodes/casted.rb
324
401
  - lib/arel/nodes/comment.rb
325
402
  - lib/arel/nodes/count.rb
403
+ - lib/arel/nodes/cte.rb
326
404
  - lib/arel/nodes/delete_statement.rb
327
405
  - lib/arel/nodes/descending.rb
328
406
  - lib/arel/nodes/equality.rb
329
407
  - lib/arel/nodes/extract.rb
330
408
  - lib/arel/nodes/false.rb
409
+ - lib/arel/nodes/filter.rb
410
+ - lib/arel/nodes/fragments.rb
331
411
  - lib/arel/nodes/full_outer_join.rb
332
412
  - lib/arel/nodes/function.rb
333
413
  - lib/arel/nodes/grouping.rb
@@ -337,8 +417,10 @@ files:
337
417
  - lib/arel/nodes/inner_join.rb
338
418
  - lib/arel/nodes/insert_statement.rb
339
419
  - lib/arel/nodes/join_source.rb
420
+ - lib/arel/nodes/leading_join.rb
340
421
  - lib/arel/nodes/matches.rb
341
422
  - lib/arel/nodes/named_function.rb
423
+ - lib/arel/nodes/nary.rb
342
424
  - lib/arel/nodes/node.rb
343
425
  - lib/arel/nodes/node_expression.rb
344
426
  - lib/arel/nodes/ordering.rb
@@ -375,25 +457,29 @@ files:
375
457
  - lib/arel/visitors/visitor.rb
376
458
  - lib/arel/window_predications.rb
377
459
  - lib/rails/generators/active_record.rb
460
+ - lib/rails/generators/active_record/application_record/USAGE
378
461
  - lib/rails/generators/active_record/application_record/application_record_generator.rb
379
462
  - lib/rails/generators/active_record/application_record/templates/application_record.rb.tt
380
463
  - lib/rails/generators/active_record/migration.rb
381
464
  - lib/rails/generators/active_record/migration/migration_generator.rb
382
465
  - lib/rails/generators/active_record/migration/templates/create_table_migration.rb.tt
383
466
  - lib/rails/generators/active_record/migration/templates/migration.rb.tt
467
+ - lib/rails/generators/active_record/model/USAGE
384
468
  - lib/rails/generators/active_record/model/model_generator.rb
385
469
  - lib/rails/generators/active_record/model/templates/abstract_base_class.rb.tt
386
470
  - lib/rails/generators/active_record/model/templates/model.rb.tt
387
471
  - lib/rails/generators/active_record/model/templates/module.rb.tt
472
+ - lib/rails/generators/active_record/multi_db/multi_db_generator.rb
473
+ - lib/rails/generators/active_record/multi_db/templates/multi_db.rb.tt
388
474
  homepage: https://rubyonrails.org
389
475
  licenses:
390
476
  - MIT
391
477
  metadata:
392
478
  bug_tracker_uri: https://github.com/rails/rails/issues
393
- changelog_uri: https://github.com/rails/rails/blob/v6.1.7/activerecord/CHANGELOG.md
394
- documentation_uri: https://api.rubyonrails.org/v6.1.7/
479
+ changelog_uri: https://github.com/rails/rails/blob/v7.2.0/activerecord/CHANGELOG.md
480
+ documentation_uri: https://api.rubyonrails.org/v7.2.0/
395
481
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
396
- source_code_uri: https://github.com/rails/rails/tree/v6.1.7/activerecord
482
+ source_code_uri: https://github.com/rails/rails/tree/v7.2.0/activerecord
397
483
  rubygems_mfa_required: 'true'
398
484
  post_install_message:
399
485
  rdoc_options:
@@ -405,14 +491,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
405
491
  requirements:
406
492
  - - ">="
407
493
  - !ruby/object:Gem::Version
408
- version: 2.5.0
494
+ version: 3.1.0
409
495
  required_rubygems_version: !ruby/object:Gem::Requirement
410
496
  requirements:
411
497
  - - ">="
412
498
  - !ruby/object:Gem::Version
413
499
  version: '0'
414
500
  requirements: []
415
- rubygems_version: 3.3.3
501
+ rubygems_version: 3.5.11
416
502
  signing_key:
417
503
  specification_version: 4
418
504
  summary: Object-relational mapper framework (part of Rails).
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ActiveRecord
4
- module ConnectionAdapters
5
- class LegacyPoolManager # :nodoc:
6
- def initialize
7
- @name_to_pool_config = {}
8
- end
9
-
10
- def shard_names
11
- @name_to_pool_config.keys
12
- end
13
-
14
- def pool_configs(_ = nil)
15
- @name_to_pool_config.values
16
- end
17
-
18
- def remove_pool_config(_, shard)
19
- @name_to_pool_config.delete(shard)
20
- end
21
-
22
- def get_pool_config(_, shard)
23
- @name_to_pool_config[shard]
24
- end
25
-
26
- def set_pool_config(role, shard, pool_config)
27
- if pool_config
28
- @name_to_pool_config[shard] = pool_config
29
- else
30
- raise ArgumentError, "The `pool_config` for the :#{role} role and :#{shard} shard was `nil`. Please check your configuration. If you want your writing role to be something other than `:writing` set `config.active_record.writing_role` in your application configuration. The same setting should be applied for the `reading_role` if applicable."
31
- end
32
- end
33
- end
34
- end
35
- end
@@ -1,67 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ActiveRecord
4
- module NullRelation # :nodoc:
5
- def pluck(*column_names)
6
- []
7
- end
8
-
9
- def delete_all
10
- 0
11
- end
12
-
13
- def update_all(_updates)
14
- 0
15
- end
16
-
17
- def delete(_id_or_array)
18
- 0
19
- end
20
-
21
- def empty?
22
- true
23
- end
24
-
25
- def none?
26
- true
27
- end
28
-
29
- def any?
30
- false
31
- end
32
-
33
- def one?
34
- false
35
- end
36
-
37
- def many?
38
- false
39
- end
40
-
41
- def to_sql
42
- ""
43
- end
44
-
45
- def calculate(operation, _column_name)
46
- case operation
47
- when :count, :sum
48
- group_values.any? ? Hash.new : 0
49
- when :average, :minimum, :maximum
50
- group_values.any? ? Hash.new : nil
51
- end
52
- end
53
-
54
- def exists?(_conditions = :none)
55
- false
56
- end
57
-
58
- def or(other)
59
- other.spawn
60
- end
61
-
62
- private
63
- def exec_queries
64
- @records = [].freeze
65
- end
66
- end
67
- end