activerecord 4.2.11.1 → 5.2.4.5

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activerecord might be problematic. Click here for more details.

Files changed (274) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +594 -1620
  3. data/MIT-LICENSE +2 -2
  4. data/README.rdoc +10 -11
  5. data/examples/performance.rb +32 -31
  6. data/examples/simple.rb +5 -4
  7. data/lib/active_record/aggregations.rb +263 -249
  8. data/lib/active_record/association_relation.rb +11 -6
  9. data/lib/active_record/associations/alias_tracker.rb +29 -35
  10. data/lib/active_record/associations/association.rb +77 -43
  11. data/lib/active_record/associations/association_scope.rb +106 -133
  12. data/lib/active_record/associations/belongs_to_association.rb +52 -41
  13. data/lib/active_record/associations/belongs_to_polymorphic_association.rb +8 -8
  14. data/lib/active_record/associations/builder/association.rb +29 -38
  15. data/lib/active_record/associations/builder/belongs_to.rb +77 -30
  16. data/lib/active_record/associations/builder/collection_association.rb +9 -22
  17. data/lib/active_record/associations/builder/has_and_belongs_to_many.rb +42 -35
  18. data/lib/active_record/associations/builder/has_many.rb +6 -4
  19. data/lib/active_record/associations/builder/has_one.rb +13 -6
  20. data/lib/active_record/associations/builder/singular_association.rb +15 -11
  21. data/lib/active_record/associations/collection_association.rb +139 -280
  22. data/lib/active_record/associations/collection_proxy.rb +231 -133
  23. data/lib/active_record/associations/foreign_association.rb +3 -1
  24. data/lib/active_record/associations/has_many_association.rb +34 -89
  25. data/lib/active_record/associations/has_many_through_association.rb +49 -76
  26. data/lib/active_record/associations/has_one_association.rb +38 -24
  27. data/lib/active_record/associations/has_one_through_association.rb +18 -9
  28. data/lib/active_record/associations/join_dependency/join_association.rb +40 -87
  29. data/lib/active_record/associations/join_dependency/join_base.rb +10 -9
  30. data/lib/active_record/associations/join_dependency/join_part.rb +12 -12
  31. data/lib/active_record/associations/join_dependency.rb +133 -159
  32. data/lib/active_record/associations/preloader/association.rb +85 -120
  33. data/lib/active_record/associations/preloader/through_association.rb +85 -74
  34. data/lib/active_record/associations/preloader.rb +81 -91
  35. data/lib/active_record/associations/singular_association.rb +27 -34
  36. data/lib/active_record/associations/through_association.rb +38 -18
  37. data/lib/active_record/associations.rb +1732 -1597
  38. data/lib/active_record/attribute_assignment.rb +58 -182
  39. data/lib/active_record/attribute_decorators.rb +39 -15
  40. data/lib/active_record/attribute_methods/before_type_cast.rb +10 -8
  41. data/lib/active_record/attribute_methods/dirty.rb +94 -135
  42. data/lib/active_record/attribute_methods/primary_key.rb +86 -71
  43. data/lib/active_record/attribute_methods/query.rb +4 -2
  44. data/lib/active_record/attribute_methods/read.rb +45 -63
  45. data/lib/active_record/attribute_methods/serialization.rb +40 -20
  46. data/lib/active_record/attribute_methods/time_zone_conversion.rb +58 -36
  47. data/lib/active_record/attribute_methods/write.rb +30 -45
  48. data/lib/active_record/attribute_methods.rb +166 -109
  49. data/lib/active_record/attributes.rb +201 -82
  50. data/lib/active_record/autosave_association.rb +94 -36
  51. data/lib/active_record/base.rb +57 -44
  52. data/lib/active_record/callbacks.rb +97 -57
  53. data/lib/active_record/coders/json.rb +3 -1
  54. data/lib/active_record/coders/yaml_column.rb +24 -12
  55. data/lib/active_record/collection_cache_key.rb +53 -0
  56. data/lib/active_record/connection_adapters/abstract/connection_pool.rb +712 -290
  57. data/lib/active_record/connection_adapters/abstract/database_limits.rb +10 -5
  58. data/lib/active_record/connection_adapters/abstract/database_statements.rb +237 -90
  59. data/lib/active_record/connection_adapters/abstract/query_cache.rb +71 -21
  60. data/lib/active_record/connection_adapters/abstract/quoting.rb +118 -52
  61. data/lib/active_record/connection_adapters/abstract/savepoints.rb +5 -3
  62. data/lib/active_record/connection_adapters/abstract/schema_creation.rb +67 -46
  63. data/lib/active_record/connection_adapters/abstract/schema_definitions.rb +318 -217
  64. data/lib/active_record/connection_adapters/abstract/schema_dumper.rb +81 -36
  65. data/lib/active_record/connection_adapters/abstract/schema_statements.rb +570 -228
  66. data/lib/active_record/connection_adapters/abstract/transaction.rb +138 -70
  67. data/lib/active_record/connection_adapters/abstract_adapter.rb +325 -202
  68. data/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +542 -601
  69. data/lib/active_record/connection_adapters/column.rb +50 -41
  70. data/lib/active_record/connection_adapters/connection_specification.rb +147 -135
  71. data/lib/active_record/connection_adapters/determine_if_preparable_visitor.rb +33 -0
  72. data/lib/active_record/connection_adapters/mysql/column.rb +27 -0
  73. data/lib/active_record/connection_adapters/mysql/database_statements.rb +140 -0
  74. data/lib/active_record/connection_adapters/mysql/explain_pretty_printer.rb +72 -0
  75. data/lib/active_record/connection_adapters/mysql/quoting.rb +44 -0
  76. data/lib/active_record/connection_adapters/mysql/schema_creation.rb +73 -0
  77. data/lib/active_record/connection_adapters/mysql/schema_definitions.rb +87 -0
  78. data/lib/active_record/connection_adapters/mysql/schema_dumper.rb +80 -0
  79. data/lib/active_record/connection_adapters/mysql/schema_statements.rb +148 -0
  80. data/lib/active_record/connection_adapters/mysql/type_metadata.rb +35 -0
  81. data/lib/active_record/connection_adapters/mysql2_adapter.rb +41 -180
  82. data/lib/active_record/connection_adapters/postgresql/column.rb +35 -11
  83. data/lib/active_record/connection_adapters/postgresql/database_statements.rb +45 -114
  84. data/lib/active_record/connection_adapters/postgresql/explain_pretty_printer.rb +44 -0
  85. data/lib/active_record/connection_adapters/postgresql/oid/array.rb +50 -58
  86. data/lib/active_record/connection_adapters/postgresql/oid/bit.rb +10 -6
  87. data/lib/active_record/connection_adapters/postgresql/oid/bit_varying.rb +2 -0
  88. data/lib/active_record/connection_adapters/postgresql/oid/bytea.rb +4 -2
  89. data/lib/active_record/connection_adapters/postgresql/oid/cidr.rb +5 -1
  90. data/lib/active_record/connection_adapters/postgresql/oid/date.rb +13 -1
  91. data/lib/active_record/connection_adapters/postgresql/oid/date_time.rb +9 -22
  92. data/lib/active_record/connection_adapters/postgresql/oid/decimal.rb +3 -1
  93. data/lib/active_record/connection_adapters/postgresql/oid/enum.rb +5 -3
  94. data/lib/active_record/connection_adapters/postgresql/oid/hstore.rb +31 -19
  95. data/lib/active_record/connection_adapters/postgresql/oid/inet.rb +2 -0
  96. data/lib/active_record/connection_adapters/postgresql/oid/jsonb.rb +3 -11
  97. data/lib/active_record/connection_adapters/postgresql/oid/legacy_point.rb +45 -0
  98. data/lib/active_record/connection_adapters/postgresql/oid/money.rb +7 -9
  99. data/lib/active_record/connection_adapters/postgresql/oid/{integer.rb → oid.rb} +6 -2
  100. data/lib/active_record/connection_adapters/postgresql/oid/point.rb +33 -11
  101. data/lib/active_record/connection_adapters/postgresql/oid/range.rb +52 -34
  102. data/lib/active_record/connection_adapters/postgresql/oid/specialized_string.rb +4 -5
  103. data/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb +55 -53
  104. data/lib/active_record/connection_adapters/postgresql/oid/uuid.rb +5 -3
  105. data/lib/active_record/connection_adapters/postgresql/oid/vector.rb +3 -1
  106. data/lib/active_record/connection_adapters/postgresql/oid/xml.rb +3 -1
  107. data/lib/active_record/connection_adapters/postgresql/oid.rb +23 -25
  108. data/lib/active_record/connection_adapters/postgresql/quoting.rb +107 -47
  109. data/lib/active_record/connection_adapters/postgresql/referential_integrity.rb +27 -14
  110. data/lib/active_record/connection_adapters/postgresql/schema_creation.rb +65 -0
  111. data/lib/active_record/connection_adapters/postgresql/schema_definitions.rb +144 -90
  112. data/lib/active_record/connection_adapters/postgresql/schema_dumper.rb +50 -0
  113. data/lib/active_record/connection_adapters/postgresql/schema_statements.rb +462 -284
  114. data/lib/active_record/connection_adapters/postgresql/type_metadata.rb +39 -0
  115. data/lib/active_record/connection_adapters/postgresql/utils.rb +12 -8
  116. data/lib/active_record/connection_adapters/postgresql_adapter.rb +432 -323
  117. data/lib/active_record/connection_adapters/schema_cache.rb +48 -24
  118. data/lib/active_record/connection_adapters/sql_type_metadata.rb +34 -0
  119. data/lib/active_record/connection_adapters/sqlite3/explain_pretty_printer.rb +21 -0
  120. data/lib/active_record/connection_adapters/sqlite3/quoting.rb +67 -0
  121. data/lib/active_record/connection_adapters/sqlite3/schema_creation.rb +17 -0
  122. data/lib/active_record/connection_adapters/sqlite3/schema_definitions.rb +19 -0
  123. data/lib/active_record/connection_adapters/sqlite3/schema_dumper.rb +18 -0
  124. data/lib/active_record/connection_adapters/sqlite3/schema_statements.rb +106 -0
  125. data/lib/active_record/connection_adapters/sqlite3_adapter.rb +269 -308
  126. data/lib/active_record/connection_adapters/statement_pool.rb +34 -13
  127. data/lib/active_record/connection_handling.rb +40 -27
  128. data/lib/active_record/core.rb +178 -198
  129. data/lib/active_record/counter_cache.rb +79 -36
  130. data/lib/active_record/define_callbacks.rb +22 -0
  131. data/lib/active_record/dynamic_matchers.rb +87 -105
  132. data/lib/active_record/enum.rb +135 -88
  133. data/lib/active_record/errors.rb +179 -52
  134. data/lib/active_record/explain.rb +23 -11
  135. data/lib/active_record/explain_registry.rb +4 -2
  136. data/lib/active_record/explain_subscriber.rb +10 -5
  137. data/lib/active_record/fixture_set/file.rb +35 -9
  138. data/lib/active_record/fixtures.rb +188 -132
  139. data/lib/active_record/gem_version.rb +5 -3
  140. data/lib/active_record/inheritance.rb +148 -112
  141. data/lib/active_record/integration.rb +70 -28
  142. data/lib/active_record/internal_metadata.rb +45 -0
  143. data/lib/active_record/legacy_yaml_adapter.rb +21 -3
  144. data/lib/active_record/locale/en.yml +3 -2
  145. data/lib/active_record/locking/optimistic.rb +88 -96
  146. data/lib/active_record/locking/pessimistic.rb +15 -3
  147. data/lib/active_record/log_subscriber.rb +95 -33
  148. data/lib/active_record/migration/command_recorder.rb +133 -90
  149. data/lib/active_record/migration/compatibility.rb +217 -0
  150. data/lib/active_record/migration/join_table.rb +8 -6
  151. data/lib/active_record/migration.rb +581 -282
  152. data/lib/active_record/model_schema.rb +290 -111
  153. data/lib/active_record/nested_attributes.rb +264 -222
  154. data/lib/active_record/no_touching.rb +7 -1
  155. data/lib/active_record/null_relation.rb +24 -37
  156. data/lib/active_record/persistence.rb +347 -119
  157. data/lib/active_record/query_cache.rb +13 -24
  158. data/lib/active_record/querying.rb +19 -17
  159. data/lib/active_record/railtie.rb +94 -32
  160. data/lib/active_record/railties/console_sandbox.rb +2 -0
  161. data/lib/active_record/railties/controller_runtime.rb +9 -3
  162. data/lib/active_record/railties/databases.rake +149 -156
  163. data/lib/active_record/readonly_attributes.rb +5 -4
  164. data/lib/active_record/reflection.rb +414 -267
  165. data/lib/active_record/relation/batches/batch_enumerator.rb +69 -0
  166. data/lib/active_record/relation/batches.rb +204 -55
  167. data/lib/active_record/relation/calculations.rb +256 -248
  168. data/lib/active_record/relation/delegation.rb +67 -60
  169. data/lib/active_record/relation/finder_methods.rb +288 -239
  170. data/lib/active_record/relation/from_clause.rb +26 -0
  171. data/lib/active_record/relation/merger.rb +86 -86
  172. data/lib/active_record/relation/predicate_builder/array_handler.rb +24 -24
  173. data/lib/active_record/relation/predicate_builder/association_query_value.rb +46 -0
  174. data/lib/active_record/relation/predicate_builder/base_handler.rb +19 -0
  175. data/lib/active_record/relation/predicate_builder/basic_object_handler.rb +20 -0
  176. data/lib/active_record/relation/predicate_builder/polymorphic_array_value.rb +56 -0
  177. data/lib/active_record/relation/predicate_builder/range_handler.rb +42 -0
  178. data/lib/active_record/relation/predicate_builder/relation_handler.rb +7 -1
  179. data/lib/active_record/relation/predicate_builder.rb +116 -119
  180. data/lib/active_record/relation/query_attribute.rb +45 -0
  181. data/lib/active_record/relation/query_methods.rb +448 -393
  182. data/lib/active_record/relation/record_fetch_warning.rb +51 -0
  183. data/lib/active_record/relation/spawn_methods.rb +11 -13
  184. data/lib/active_record/relation/where_clause.rb +186 -0
  185. data/lib/active_record/relation/where_clause_factory.rb +34 -0
  186. data/lib/active_record/relation.rb +287 -340
  187. data/lib/active_record/result.rb +54 -36
  188. data/lib/active_record/runtime_registry.rb +6 -4
  189. data/lib/active_record/sanitization.rb +155 -124
  190. data/lib/active_record/schema.rb +30 -24
  191. data/lib/active_record/schema_dumper.rb +91 -87
  192. data/lib/active_record/schema_migration.rb +19 -16
  193. data/lib/active_record/scoping/default.rb +102 -85
  194. data/lib/active_record/scoping/named.rb +81 -32
  195. data/lib/active_record/scoping.rb +45 -26
  196. data/lib/active_record/secure_token.rb +40 -0
  197. data/lib/active_record/serialization.rb +5 -5
  198. data/lib/active_record/statement_cache.rb +45 -35
  199. data/lib/active_record/store.rb +42 -36
  200. data/lib/active_record/suppressor.rb +61 -0
  201. data/lib/active_record/table_metadata.rb +82 -0
  202. data/lib/active_record/tasks/database_tasks.rb +134 -96
  203. data/lib/active_record/tasks/mysql_database_tasks.rb +56 -100
  204. data/lib/active_record/tasks/postgresql_database_tasks.rb +83 -41
  205. data/lib/active_record/tasks/sqlite_database_tasks.rb +44 -16
  206. data/lib/active_record/timestamp.rb +70 -38
  207. data/lib/active_record/touch_later.rb +64 -0
  208. data/lib/active_record/transactions.rb +199 -124
  209. data/lib/active_record/translation.rb +2 -0
  210. data/lib/active_record/type/adapter_specific_registry.rb +136 -0
  211. data/lib/active_record/type/date.rb +4 -45
  212. data/lib/active_record/type/date_time.rb +4 -49
  213. data/lib/active_record/type/decimal_without_scale.rb +6 -2
  214. data/lib/active_record/type/hash_lookup_type_map.rb +5 -3
  215. data/lib/active_record/type/internal/timezone.rb +17 -0
  216. data/lib/active_record/type/json.rb +30 -0
  217. data/lib/active_record/type/serialized.rb +24 -15
  218. data/lib/active_record/type/text.rb +2 -2
  219. data/lib/active_record/type/time.rb +11 -16
  220. data/lib/active_record/type/type_map.rb +15 -17
  221. data/lib/active_record/type/unsigned_integer.rb +9 -7
  222. data/lib/active_record/type.rb +79 -23
  223. data/lib/active_record/type_caster/connection.rb +33 -0
  224. data/lib/active_record/type_caster/map.rb +23 -0
  225. data/lib/active_record/type_caster.rb +9 -0
  226. data/lib/active_record/validations/absence.rb +25 -0
  227. data/lib/active_record/validations/associated.rb +13 -4
  228. data/lib/active_record/validations/length.rb +26 -0
  229. data/lib/active_record/validations/presence.rb +14 -13
  230. data/lib/active_record/validations/uniqueness.rb +40 -41
  231. data/lib/active_record/validations.rb +38 -35
  232. data/lib/active_record/version.rb +3 -1
  233. data/lib/active_record.rb +34 -22
  234. data/lib/rails/generators/active_record/application_record/application_record_generator.rb +27 -0
  235. data/lib/rails/generators/active_record/application_record/templates/application_record.rb.tt +5 -0
  236. data/lib/rails/generators/active_record/migration/migration_generator.rb +43 -35
  237. data/lib/rails/generators/active_record/migration/templates/{create_table_migration.rb → create_table_migration.rb.tt} +8 -3
  238. data/lib/rails/generators/active_record/migration/templates/{migration.rb → migration.rb.tt} +8 -1
  239. data/lib/rails/generators/active_record/migration.rb +18 -1
  240. data/lib/rails/generators/active_record/model/model_generator.rb +18 -22
  241. data/lib/rails/generators/active_record/model/templates/{model.rb → model.rb.tt} +3 -0
  242. data/lib/rails/generators/active_record/model/templates/{module.rb → module.rb.tt} +0 -0
  243. data/lib/rails/generators/active_record.rb +7 -5
  244. metadata +72 -49
  245. data/lib/active_record/associations/preloader/belongs_to.rb +0 -17
  246. data/lib/active_record/associations/preloader/collection_association.rb +0 -24
  247. data/lib/active_record/associations/preloader/has_many.rb +0 -17
  248. data/lib/active_record/associations/preloader/has_many_through.rb +0 -19
  249. data/lib/active_record/associations/preloader/has_one.rb +0 -23
  250. data/lib/active_record/associations/preloader/has_one_through.rb +0 -9
  251. data/lib/active_record/associations/preloader/singular_association.rb +0 -21
  252. data/lib/active_record/attribute.rb +0 -163
  253. data/lib/active_record/attribute_set/builder.rb +0 -106
  254. data/lib/active_record/attribute_set.rb +0 -81
  255. data/lib/active_record/connection_adapters/mysql_adapter.rb +0 -498
  256. data/lib/active_record/connection_adapters/postgresql/array_parser.rb +0 -93
  257. data/lib/active_record/connection_adapters/postgresql/oid/float.rb +0 -21
  258. data/lib/active_record/connection_adapters/postgresql/oid/infinity.rb +0 -13
  259. data/lib/active_record/connection_adapters/postgresql/oid/json.rb +0 -35
  260. data/lib/active_record/connection_adapters/postgresql/oid/time.rb +0 -11
  261. data/lib/active_record/railties/jdbcmysql_error.rb +0 -16
  262. data/lib/active_record/serializers/xml_serializer.rb +0 -193
  263. data/lib/active_record/type/big_integer.rb +0 -13
  264. data/lib/active_record/type/binary.rb +0 -50
  265. data/lib/active_record/type/boolean.rb +0 -31
  266. data/lib/active_record/type/decimal.rb +0 -64
  267. data/lib/active_record/type/decorator.rb +0 -14
  268. data/lib/active_record/type/float.rb +0 -19
  269. data/lib/active_record/type/integer.rb +0 -59
  270. data/lib/active_record/type/mutable.rb +0 -16
  271. data/lib/active_record/type/numeric.rb +0 -36
  272. data/lib/active_record/type/string.rb +0 -40
  273. data/lib/active_record/type/time_value.rb +0 -38
  274. data/lib/active_record/type/value.rb +0 -110
@@ -1,63 +1,71 @@
1
- require 'rails/generators/active_record'
1
+ # frozen_string_literal: true
2
+
3
+ require "rails/generators/active_record"
2
4
 
3
5
  module ActiveRecord
4
6
  module Generators # :nodoc:
5
7
  class MigrationGenerator < Base # :nodoc:
6
- argument :attributes, :type => :array, :default => [], :banner => "field[:type][:index] field[:type][:index]"
8
+ argument :attributes, type: :array, default: [], banner: "field[:type][:index] field[:type][:index]"
9
+
10
+ class_option :primary_key_type, type: :string, desc: "The type for primary key"
7
11
 
8
12
  def create_migration_file
9
13
  set_local_assigns!
10
14
  validate_file_name!
11
- migration_template @migration_template, "db/migrate/#{file_name}.rb"
15
+ migration_template @migration_template, File.join(db_migrate_path, "#{file_name}.rb")
12
16
  end
13
17
 
18
+ # TODO Change this to private once we've dropped Ruby 2.2 support.
19
+ # Workaround for Ruby 2.2 "private attribute?" warning.
14
20
  protected
15
- attr_reader :migration_action, :join_tables
21
+ attr_reader :migration_action, :join_tables
16
22
 
17
- # sets the default migration template that is being used for the generation of the migration
18
- # depending on the arguments which would be sent out in the command line, the migration template
19
- # and the table name instance variables are setup.
23
+ private
20
24
 
21
- def set_local_assigns!
22
- @migration_template = "migration.rb"
23
- case file_name
24
- when /^(add|remove)_.*_(?:to|from)_(.*)/
25
- @migration_action = $1
26
- @table_name = normalize_table_name($2)
27
- when /join_table/
28
- if attributes.length == 2
29
- @migration_action = 'join'
30
- @join_tables = pluralize_table_names? ? attributes.map(&:plural_name) : attributes.map(&:singular_name)
25
+ # Sets the default migration template that is being used for the generation of the migration.
26
+ # Depending on command line arguments, the migration template and the table name instance
27
+ # variables are set up.
28
+ def set_local_assigns!
29
+ @migration_template = "migration.rb"
30
+ case file_name
31
+ when /^(add)_.*_to_(.*)/, /^(remove)_.*?_from_(.*)/
32
+ @migration_action = $1
33
+ @table_name = normalize_table_name($2)
34
+ when /join_table/
35
+ if attributes.length == 2
36
+ @migration_action = "join"
37
+ @join_tables = pluralize_table_names? ? attributes.map(&:plural_name) : attributes.map(&:singular_name)
31
38
 
32
- set_index_names
39
+ set_index_names
40
+ end
41
+ when /^create_(.+)/
42
+ @table_name = normalize_table_name($1)
43
+ @migration_template = "create_table_migration.rb"
33
44
  end
34
- when /^create_(.+)/
35
- @table_name = normalize_table_name($1)
36
- @migration_template = "create_table_migration.rb"
37
45
  end
38
- end
39
46
 
40
- def set_index_names
41
- attributes.each_with_index do |attr, i|
42
- attr.index_name = [attr, attributes[i - 1]].map{ |a| index_name_for(a) }
47
+ def set_index_names
48
+ attributes.each_with_index do |attr, i|
49
+ attr.index_name = [attr, attributes[i - 1]].map { |a| index_name_for(a) }
50
+ end
43
51
  end
44
- end
45
52
 
46
- def index_name_for(attribute)
47
- if attribute.foreign_key?
48
- attribute.name
49
- else
50
- attribute.name.singularize.foreign_key
51
- end.to_sym
52
- end
53
+ def index_name_for(attribute)
54
+ if attribute.foreign_key?
55
+ attribute.name
56
+ else
57
+ attribute.name.singularize.foreign_key
58
+ end.to_sym
59
+ end
53
60
 
54
- private
55
61
  def attributes_with_index
56
62
  attributes.select { |a| !a.reference? && a.has_index? }
57
63
  end
58
64
 
65
+ # A migration file name can only contain underscores (_), lowercase characters,
66
+ # and numbers 0-9. Any other file name will raise an IllegalMigrationNameError.
59
67
  def validate_file_name!
60
- unless file_name =~ /^[_a-z0-9]+$/
68
+ unless /^[_a-z0-9]+$/.match?(file_name)
61
69
  raise IllegalMigrationNameError.new(file_name)
62
70
  end
63
71
  end
@@ -1,17 +1,22 @@
1
- class <%= migration_class_name %> < ActiveRecord::Migration
1
+ class <%= migration_class_name %> < ActiveRecord::Migration[<%= ActiveRecord::Migration.current_version %>]
2
2
  def change
3
- create_table :<%= table_name %> do |t|
3
+ create_table :<%= table_name %><%= primary_key_type %> do |t|
4
4
  <% attributes.each do |attribute| -%>
5
5
  <% if attribute.password_digest? -%>
6
6
  t.string :password_digest<%= attribute.inject_options %>
7
+ <% elsif attribute.token? -%>
8
+ t.string :<%= attribute.name %><%= attribute.inject_options %>
7
9
  <% else -%>
8
10
  t.<%= attribute.type %> :<%= attribute.name %><%= attribute.inject_options %>
9
11
  <% end -%>
10
12
  <% end -%>
11
13
  <% if options[:timestamps] %>
12
- t.timestamps null: false
14
+ t.timestamps
13
15
  <% end -%>
14
16
  end
17
+ <% attributes.select(&:token?).each do |attribute| -%>
18
+ add_index :<%= table_name %>, :<%= attribute.index_name %><%= attribute.inject_index_options %>, unique: true
19
+ <% end -%>
15
20
  <% attributes_with_index.each do |attribute| -%>
16
21
  add_index :<%= table_name %>, :<%= attribute.index_name %><%= attribute.inject_index_options %>
17
22
  <% end -%>
@@ -1,9 +1,12 @@
1
- class <%= migration_class_name %> < ActiveRecord::Migration
1
+ class <%= migration_class_name %> < ActiveRecord::Migration[<%= ActiveRecord::Migration.current_version %>]
2
2
  <%- if migration_action == 'add' -%>
3
3
  def change
4
4
  <% attributes.each do |attribute| -%>
5
5
  <%- if attribute.reference? -%>
6
6
  add_reference :<%= table_name %>, :<%= attribute.name %><%= attribute.inject_options %>
7
+ <%- elsif attribute.token? -%>
8
+ add_column :<%= table_name %>, :<%= attribute.name %>, :string<%= attribute.inject_options %>
9
+ add_index :<%= table_name %>, :<%= attribute.index_name %><%= attribute.inject_index_options %>, unique: true
7
10
  <%- else -%>
8
11
  add_column :<%= table_name %>, :<%= attribute.name %>, :<%= attribute.type %><%= attribute.inject_options %>
9
12
  <%- if attribute.has_index? -%>
@@ -16,7 +19,11 @@ class <%= migration_class_name %> < ActiveRecord::Migration
16
19
  def change
17
20
  create_join_table :<%= join_tables.first %>, :<%= join_tables.second %> do |t|
18
21
  <%- attributes.each do |attribute| -%>
22
+ <%- if attribute.reference? -%>
23
+ t.references :<%= attribute.name %><%= attribute.inject_options %>
24
+ <%- else -%>
19
25
  <%= '# ' unless attribute.has_index? -%>t.index <%= attribute.index_name %><%= attribute.inject_index_options %>
26
+ <%- end -%>
20
27
  <%- end -%>
21
28
  end
22
29
  end
@@ -1,4 +1,6 @@
1
- require 'rails/generators/migration'
1
+ # frozen_string_literal: true
2
+
3
+ require "rails/generators/migration"
2
4
 
3
5
  module ActiveRecord
4
6
  module Generators # :nodoc:
@@ -13,6 +15,21 @@ module ActiveRecord
13
15
  ActiveRecord::Migration.next_migration_number(next_migration_number)
14
16
  end
15
17
  end
18
+
19
+ private
20
+
21
+ def primary_key_type
22
+ key_type = options[:primary_key_type]
23
+ ", id: :#{key_type}" if key_type
24
+ end
25
+
26
+ def db_migrate_path
27
+ if defined?(Rails.application) && Rails.application
28
+ Rails.application.config.paths["db/migrate"].to_ary.first
29
+ else
30
+ "db/migrate"
31
+ end
32
+ end
16
33
  end
17
34
  end
18
35
  end
@@ -1,52 +1,48 @@
1
- require 'rails/generators/active_record'
1
+ # frozen_string_literal: true
2
+
3
+ require "rails/generators/active_record"
2
4
 
3
5
  module ActiveRecord
4
6
  module Generators # :nodoc:
5
7
  class ModelGenerator < Base # :nodoc:
6
- argument :attributes, :type => :array, :default => [], :banner => "field[:type][:index] field[:type][:index]"
8
+ argument :attributes, type: :array, default: [], banner: "field[:type][:index] field[:type][:index]"
7
9
 
8
10
  check_class_collision
9
11
 
10
- class_option :migration, :type => :boolean
11
- class_option :timestamps, :type => :boolean
12
- class_option :parent, :type => :string, :desc => "The parent class for the generated model"
13
- class_option :indexes, :type => :boolean, :default => true, :desc => "Add indexes for references and belongs_to columns"
12
+ class_option :migration, type: :boolean
13
+ class_option :timestamps, type: :boolean
14
+ class_option :parent, type: :string, desc: "The parent class for the generated model"
15
+ class_option :indexes, type: :boolean, default: true, desc: "Add indexes for references and belongs_to columns"
16
+ class_option :primary_key_type, type: :string, desc: "The type for primary key"
14
17
 
15
-
16
18
  # creates the migration file for the model.
17
-
18
19
  def create_migration_file
19
20
  return unless options[:migration] && options[:parent].nil?
20
21
  attributes.each { |a| a.attr_options.delete(:index) if a.reference? && !a.has_index? } if options[:indexes] == false
21
- migration_template "../../migration/templates/create_table_migration.rb", "db/migrate/create_#{table_name}.rb"
22
+ migration_template "../../migration/templates/create_table_migration.rb", File.join(db_migrate_path, "create_#{table_name}.rb")
22
23
  end
23
24
 
24
25
  def create_model_file
25
- template 'model.rb', File.join('app/models', class_path, "#{file_name}.rb")
26
+ template "model.rb", File.join("app/models", class_path, "#{file_name}.rb")
26
27
  end
27
28
 
28
29
  def create_module_file
29
30
  return if regular_class_path.empty?
30
- template 'module.rb', File.join('app/models', "#{class_path.join('/')}.rb") if behavior == :invoke
31
- end
32
-
33
- def attributes_with_index
34
- attributes.select { |a| !a.reference? && a.has_index? }
35
- end
36
-
37
- def accessible_attributes
38
- attributes.reject(&:reference?)
31
+ template "module.rb", File.join("app/models", "#{class_path.join('/')}.rb") if behavior == :invoke
39
32
  end
40
33
 
41
34
  hook_for :test_framework
42
35
 
43
- protected
36
+ private
37
+
38
+ def attributes_with_index
39
+ attributes.select { |a| !a.reference? && a.has_index? }
40
+ end
44
41
 
45
42
  # Used by the migration template to determine the parent name of the model
46
43
  def parent_class_name
47
- options[:parent] || "ActiveRecord::Base"
44
+ options[:parent] || "ApplicationRecord"
48
45
  end
49
-
50
46
  end
51
47
  end
52
48
  end
@@ -3,6 +3,9 @@ class <%= class_name %> < <%= parent_class_name.classify %>
3
3
  <% attributes.select(&:reference?).each do |attribute| -%>
4
4
  belongs_to :<%= attribute.name %><%= ', polymorphic: true' if attribute.polymorphic? %><%= ', required: true' if attribute.required? %>
5
5
  <% end -%>
6
+ <% attributes.select(&:token?).each do |attribute| -%>
7
+ has_secure_token<% if attribute.name != "token" %> :<%= attribute.name %><% end %>
8
+ <% end -%>
6
9
  <% if attributes.any?(&:password_digest?) -%>
7
10
  has_secure_password
8
11
  <% end -%>
@@ -1,7 +1,9 @@
1
- require 'rails/generators/named_base'
2
- require 'rails/generators/active_model'
3
- require 'rails/generators/active_record/migration'
4
- require 'active_record'
1
+ # frozen_string_literal: true
2
+
3
+ require "rails/generators/named_base"
4
+ require "rails/generators/active_model"
5
+ require "rails/generators/active_record/migration"
6
+ require "active_record"
5
7
 
6
8
  module ActiveRecord
7
9
  module Generators # :nodoc:
@@ -10,7 +12,7 @@ module ActiveRecord
10
12
 
11
13
  # Set the current directory as base for the inherited generators.
12
14
  def self.base_root
13
- File.dirname(__FILE__)
15
+ __dir__
14
16
  end
15
17
  end
16
18
  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: 4.2.11.1
4
+ version: 5.2.4.5
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: 2019-03-11 00:00:00.000000000 Z
11
+ date: 2021-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 4.2.11.1
19
+ version: 5.2.4.5
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: 4.2.11.1
26
+ version: 5.2.4.5
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: 4.2.11.1
33
+ version: 5.2.4.5
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: 4.2.11.1
40
+ version: 5.2.4.5
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: arel
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '6.0'
47
+ version: '9.0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '6.0'
54
+ version: '9.0'
55
55
  description: Databases on Rails. Build a persistent domain model by mapping database
56
56
  tables to Ruby classes. Strong conventions for associations, validations, aggregations,
57
57
  migrations, and testing come baked-in.
@@ -95,17 +95,9 @@ files:
95
95
  - lib/active_record/associations/join_dependency/join_part.rb
96
96
  - lib/active_record/associations/preloader.rb
97
97
  - lib/active_record/associations/preloader/association.rb
98
- - lib/active_record/associations/preloader/belongs_to.rb
99
- - lib/active_record/associations/preloader/collection_association.rb
100
- - lib/active_record/associations/preloader/has_many.rb
101
- - lib/active_record/associations/preloader/has_many_through.rb
102
- - lib/active_record/associations/preloader/has_one.rb
103
- - lib/active_record/associations/preloader/has_one_through.rb
104
- - lib/active_record/associations/preloader/singular_association.rb
105
98
  - lib/active_record/associations/preloader/through_association.rb
106
99
  - lib/active_record/associations/singular_association.rb
107
100
  - lib/active_record/associations/through_association.rb
108
- - lib/active_record/attribute.rb
109
101
  - lib/active_record/attribute_assignment.rb
110
102
  - lib/active_record/attribute_decorators.rb
111
103
  - lib/active_record/attribute_methods.rb
@@ -117,14 +109,13 @@ files:
117
109
  - lib/active_record/attribute_methods/serialization.rb
118
110
  - lib/active_record/attribute_methods/time_zone_conversion.rb
119
111
  - lib/active_record/attribute_methods/write.rb
120
- - lib/active_record/attribute_set.rb
121
- - lib/active_record/attribute_set/builder.rb
122
112
  - lib/active_record/attributes.rb
123
113
  - lib/active_record/autosave_association.rb
124
114
  - lib/active_record/base.rb
125
115
  - lib/active_record/callbacks.rb
126
116
  - lib/active_record/coders/json.rb
127
117
  - lib/active_record/coders/yaml_column.rb
118
+ - lib/active_record/collection_cache_key.rb
128
119
  - lib/active_record/connection_adapters/abstract/connection_pool.rb
129
120
  - lib/active_record/connection_adapters/abstract/database_limits.rb
130
121
  - lib/active_record/connection_adapters/abstract/database_statements.rb
@@ -140,11 +131,20 @@ files:
140
131
  - lib/active_record/connection_adapters/abstract_mysql_adapter.rb
141
132
  - lib/active_record/connection_adapters/column.rb
142
133
  - lib/active_record/connection_adapters/connection_specification.rb
134
+ - lib/active_record/connection_adapters/determine_if_preparable_visitor.rb
135
+ - lib/active_record/connection_adapters/mysql/column.rb
136
+ - lib/active_record/connection_adapters/mysql/database_statements.rb
137
+ - lib/active_record/connection_adapters/mysql/explain_pretty_printer.rb
138
+ - lib/active_record/connection_adapters/mysql/quoting.rb
139
+ - lib/active_record/connection_adapters/mysql/schema_creation.rb
140
+ - lib/active_record/connection_adapters/mysql/schema_definitions.rb
141
+ - lib/active_record/connection_adapters/mysql/schema_dumper.rb
142
+ - lib/active_record/connection_adapters/mysql/schema_statements.rb
143
+ - lib/active_record/connection_adapters/mysql/type_metadata.rb
143
144
  - lib/active_record/connection_adapters/mysql2_adapter.rb
144
- - lib/active_record/connection_adapters/mysql_adapter.rb
145
- - lib/active_record/connection_adapters/postgresql/array_parser.rb
146
145
  - lib/active_record/connection_adapters/postgresql/column.rb
147
146
  - lib/active_record/connection_adapters/postgresql/database_statements.rb
147
+ - lib/active_record/connection_adapters/postgresql/explain_pretty_printer.rb
148
148
  - lib/active_record/connection_adapters/postgresql/oid.rb
149
149
  - lib/active_record/connection_adapters/postgresql/oid/array.rb
150
150
  - lib/active_record/connection_adapters/postgresql/oid/bit.rb
@@ -155,34 +155,42 @@ files:
155
155
  - lib/active_record/connection_adapters/postgresql/oid/date_time.rb
156
156
  - lib/active_record/connection_adapters/postgresql/oid/decimal.rb
157
157
  - lib/active_record/connection_adapters/postgresql/oid/enum.rb
158
- - lib/active_record/connection_adapters/postgresql/oid/float.rb
159
158
  - lib/active_record/connection_adapters/postgresql/oid/hstore.rb
160
159
  - lib/active_record/connection_adapters/postgresql/oid/inet.rb
161
- - lib/active_record/connection_adapters/postgresql/oid/infinity.rb
162
- - lib/active_record/connection_adapters/postgresql/oid/integer.rb
163
- - lib/active_record/connection_adapters/postgresql/oid/json.rb
164
160
  - lib/active_record/connection_adapters/postgresql/oid/jsonb.rb
161
+ - lib/active_record/connection_adapters/postgresql/oid/legacy_point.rb
165
162
  - lib/active_record/connection_adapters/postgresql/oid/money.rb
163
+ - lib/active_record/connection_adapters/postgresql/oid/oid.rb
166
164
  - lib/active_record/connection_adapters/postgresql/oid/point.rb
167
165
  - lib/active_record/connection_adapters/postgresql/oid/range.rb
168
166
  - lib/active_record/connection_adapters/postgresql/oid/specialized_string.rb
169
- - lib/active_record/connection_adapters/postgresql/oid/time.rb
170
167
  - lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb
171
168
  - lib/active_record/connection_adapters/postgresql/oid/uuid.rb
172
169
  - lib/active_record/connection_adapters/postgresql/oid/vector.rb
173
170
  - lib/active_record/connection_adapters/postgresql/oid/xml.rb
174
171
  - lib/active_record/connection_adapters/postgresql/quoting.rb
175
172
  - lib/active_record/connection_adapters/postgresql/referential_integrity.rb
173
+ - lib/active_record/connection_adapters/postgresql/schema_creation.rb
176
174
  - lib/active_record/connection_adapters/postgresql/schema_definitions.rb
175
+ - lib/active_record/connection_adapters/postgresql/schema_dumper.rb
177
176
  - lib/active_record/connection_adapters/postgresql/schema_statements.rb
177
+ - lib/active_record/connection_adapters/postgresql/type_metadata.rb
178
178
  - lib/active_record/connection_adapters/postgresql/utils.rb
179
179
  - lib/active_record/connection_adapters/postgresql_adapter.rb
180
180
  - lib/active_record/connection_adapters/schema_cache.rb
181
+ - lib/active_record/connection_adapters/sql_type_metadata.rb
182
+ - lib/active_record/connection_adapters/sqlite3/explain_pretty_printer.rb
183
+ - lib/active_record/connection_adapters/sqlite3/quoting.rb
184
+ - lib/active_record/connection_adapters/sqlite3/schema_creation.rb
185
+ - lib/active_record/connection_adapters/sqlite3/schema_definitions.rb
186
+ - lib/active_record/connection_adapters/sqlite3/schema_dumper.rb
187
+ - lib/active_record/connection_adapters/sqlite3/schema_statements.rb
181
188
  - lib/active_record/connection_adapters/sqlite3_adapter.rb
182
189
  - lib/active_record/connection_adapters/statement_pool.rb
183
190
  - lib/active_record/connection_handling.rb
184
191
  - lib/active_record/core.rb
185
192
  - lib/active_record/counter_cache.rb
193
+ - lib/active_record/define_callbacks.rb
186
194
  - lib/active_record/dynamic_matchers.rb
187
195
  - lib/active_record/enum.rb
188
196
  - lib/active_record/errors.rb
@@ -194,6 +202,7 @@ files:
194
202
  - lib/active_record/gem_version.rb
195
203
  - lib/active_record/inheritance.rb
196
204
  - lib/active_record/integration.rb
205
+ - lib/active_record/internal_metadata.rb
197
206
  - lib/active_record/legacy_yaml_adapter.rb
198
207
  - lib/active_record/locale/en.yml
199
208
  - lib/active_record/locking/optimistic.rb
@@ -201,6 +210,7 @@ files:
201
210
  - lib/active_record/log_subscriber.rb
202
211
  - lib/active_record/migration.rb
203
212
  - lib/active_record/migration/command_recorder.rb
213
+ - lib/active_record/migration/compatibility.rb
204
214
  - lib/active_record/migration/join_table.rb
205
215
  - lib/active_record/model_schema.rb
206
216
  - lib/active_record/nested_attributes.rb
@@ -213,20 +223,30 @@ files:
213
223
  - lib/active_record/railties/console_sandbox.rb
214
224
  - lib/active_record/railties/controller_runtime.rb
215
225
  - lib/active_record/railties/databases.rake
216
- - lib/active_record/railties/jdbcmysql_error.rb
217
226
  - lib/active_record/readonly_attributes.rb
218
227
  - lib/active_record/reflection.rb
219
228
  - lib/active_record/relation.rb
220
229
  - lib/active_record/relation/batches.rb
230
+ - lib/active_record/relation/batches/batch_enumerator.rb
221
231
  - lib/active_record/relation/calculations.rb
222
232
  - lib/active_record/relation/delegation.rb
223
233
  - lib/active_record/relation/finder_methods.rb
234
+ - lib/active_record/relation/from_clause.rb
224
235
  - lib/active_record/relation/merger.rb
225
236
  - lib/active_record/relation/predicate_builder.rb
226
237
  - lib/active_record/relation/predicate_builder/array_handler.rb
238
+ - lib/active_record/relation/predicate_builder/association_query_value.rb
239
+ - lib/active_record/relation/predicate_builder/base_handler.rb
240
+ - lib/active_record/relation/predicate_builder/basic_object_handler.rb
241
+ - lib/active_record/relation/predicate_builder/polymorphic_array_value.rb
242
+ - lib/active_record/relation/predicate_builder/range_handler.rb
227
243
  - lib/active_record/relation/predicate_builder/relation_handler.rb
244
+ - lib/active_record/relation/query_attribute.rb
228
245
  - lib/active_record/relation/query_methods.rb
246
+ - lib/active_record/relation/record_fetch_warning.rb
229
247
  - lib/active_record/relation/spawn_methods.rb
248
+ - lib/active_record/relation/where_clause.rb
249
+ - lib/active_record/relation/where_clause_factory.rb
230
250
  - lib/active_record/result.rb
231
251
  - lib/active_record/runtime_registry.rb
232
252
  - lib/active_record/sanitization.rb
@@ -236,56 +256,59 @@ files:
236
256
  - lib/active_record/scoping.rb
237
257
  - lib/active_record/scoping/default.rb
238
258
  - lib/active_record/scoping/named.rb
259
+ - lib/active_record/secure_token.rb
239
260
  - lib/active_record/serialization.rb
240
- - lib/active_record/serializers/xml_serializer.rb
241
261
  - lib/active_record/statement_cache.rb
242
262
  - lib/active_record/store.rb
263
+ - lib/active_record/suppressor.rb
264
+ - lib/active_record/table_metadata.rb
243
265
  - lib/active_record/tasks/database_tasks.rb
244
266
  - lib/active_record/tasks/mysql_database_tasks.rb
245
267
  - lib/active_record/tasks/postgresql_database_tasks.rb
246
268
  - lib/active_record/tasks/sqlite_database_tasks.rb
247
269
  - lib/active_record/timestamp.rb
270
+ - lib/active_record/touch_later.rb
248
271
  - lib/active_record/transactions.rb
249
272
  - lib/active_record/translation.rb
250
273
  - lib/active_record/type.rb
251
- - lib/active_record/type/big_integer.rb
252
- - lib/active_record/type/binary.rb
253
- - lib/active_record/type/boolean.rb
274
+ - lib/active_record/type/adapter_specific_registry.rb
254
275
  - lib/active_record/type/date.rb
255
276
  - lib/active_record/type/date_time.rb
256
- - lib/active_record/type/decimal.rb
257
277
  - lib/active_record/type/decimal_without_scale.rb
258
- - lib/active_record/type/decorator.rb
259
- - lib/active_record/type/float.rb
260
278
  - lib/active_record/type/hash_lookup_type_map.rb
261
- - lib/active_record/type/integer.rb
262
- - lib/active_record/type/mutable.rb
263
- - lib/active_record/type/numeric.rb
279
+ - lib/active_record/type/internal/timezone.rb
280
+ - lib/active_record/type/json.rb
264
281
  - lib/active_record/type/serialized.rb
265
- - lib/active_record/type/string.rb
266
282
  - lib/active_record/type/text.rb
267
283
  - lib/active_record/type/time.rb
268
- - lib/active_record/type/time_value.rb
269
284
  - lib/active_record/type/type_map.rb
270
285
  - lib/active_record/type/unsigned_integer.rb
271
- - lib/active_record/type/value.rb
286
+ - lib/active_record/type_caster.rb
287
+ - lib/active_record/type_caster/connection.rb
288
+ - lib/active_record/type_caster/map.rb
272
289
  - lib/active_record/validations.rb
290
+ - lib/active_record/validations/absence.rb
273
291
  - lib/active_record/validations/associated.rb
292
+ - lib/active_record/validations/length.rb
274
293
  - lib/active_record/validations/presence.rb
275
294
  - lib/active_record/validations/uniqueness.rb
276
295
  - lib/active_record/version.rb
277
296
  - lib/rails/generators/active_record.rb
297
+ - lib/rails/generators/active_record/application_record/application_record_generator.rb
298
+ - lib/rails/generators/active_record/application_record/templates/application_record.rb.tt
278
299
  - lib/rails/generators/active_record/migration.rb
279
300
  - lib/rails/generators/active_record/migration/migration_generator.rb
280
- - lib/rails/generators/active_record/migration/templates/create_table_migration.rb
281
- - lib/rails/generators/active_record/migration/templates/migration.rb
301
+ - lib/rails/generators/active_record/migration/templates/create_table_migration.rb.tt
302
+ - lib/rails/generators/active_record/migration/templates/migration.rb.tt
282
303
  - lib/rails/generators/active_record/model/model_generator.rb
283
- - lib/rails/generators/active_record/model/templates/model.rb
284
- - lib/rails/generators/active_record/model/templates/module.rb
285
- homepage: http://www.rubyonrails.org
304
+ - lib/rails/generators/active_record/model/templates/model.rb.tt
305
+ - lib/rails/generators/active_record/model/templates/module.rb.tt
306
+ homepage: http://rubyonrails.org
286
307
  licenses:
287
308
  - MIT
288
- metadata: {}
309
+ metadata:
310
+ source_code_uri: https://github.com/rails/rails/tree/v5.2.4.5/activerecord
311
+ changelog_uri: https://github.com/rails/rails/blob/v5.2.4.5/activerecord/CHANGELOG.md
289
312
  post_install_message:
290
313
  rdoc_options:
291
314
  - "--main"
@@ -296,14 +319,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
296
319
  requirements:
297
320
  - - ">="
298
321
  - !ruby/object:Gem::Version
299
- version: 1.9.3
322
+ version: 2.2.2
300
323
  required_rubygems_version: !ruby/object:Gem::Requirement
301
324
  requirements:
302
325
  - - ">="
303
326
  - !ruby/object:Gem::Version
304
327
  version: '0'
305
328
  requirements: []
306
- rubygems_version: 3.0.1
329
+ rubygems_version: 3.0.3
307
330
  signing_key:
308
331
  specification_version: 4
309
332
  summary: Object-relational mapper framework (part of Rails).
@@ -1,17 +0,0 @@
1
- module ActiveRecord
2
- module Associations
3
- class Preloader
4
- class BelongsTo < SingularAssociation #:nodoc:
5
-
6
- def association_key_name
7
- reflection.options[:primary_key] || klass && klass.primary_key
8
- end
9
-
10
- def owner_key_name
11
- reflection.foreign_key
12
- end
13
-
14
- end
15
- end
16
- end
17
- end
@@ -1,24 +0,0 @@
1
- module ActiveRecord
2
- module Associations
3
- class Preloader
4
- class CollectionAssociation < Association #:nodoc:
5
-
6
- private
7
-
8
- def build_scope
9
- super.order(preload_scope.values[:order] || reflection_scope.values[:order])
10
- end
11
-
12
- def preload(preloader)
13
- associated_records_by_owner(preloader).each do |owner, records|
14
- association = owner.association(reflection.name)
15
- association.loaded!
16
- association.target.concat(records)
17
- records.each { |record| association.set_inverse_instance(record) }
18
- end
19
- end
20
-
21
- end
22
- end
23
- end
24
- end