activerecord 3.2.22.5 → 4.2.11.3

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 (236) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +1632 -609
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +37 -41
  5. data/examples/performance.rb +31 -19
  6. data/examples/simple.rb +4 -4
  7. data/lib/active_record/aggregations.rb +56 -42
  8. data/lib/active_record/association_relation.rb +35 -0
  9. data/lib/active_record/associations/alias_tracker.rb +47 -36
  10. data/lib/active_record/associations/association.rb +73 -55
  11. data/lib/active_record/associations/association_scope.rb +143 -82
  12. data/lib/active_record/associations/belongs_to_association.rb +65 -25
  13. data/lib/active_record/associations/belongs_to_polymorphic_association.rb +7 -2
  14. data/lib/active_record/associations/builder/association.rb +125 -31
  15. data/lib/active_record/associations/builder/belongs_to.rb +89 -61
  16. data/lib/active_record/associations/builder/collection_association.rb +69 -49
  17. data/lib/active_record/associations/builder/has_and_belongs_to_many.rb +113 -42
  18. data/lib/active_record/associations/builder/has_many.rb +8 -64
  19. data/lib/active_record/associations/builder/has_one.rb +12 -51
  20. data/lib/active_record/associations/builder/singular_association.rb +23 -17
  21. data/lib/active_record/associations/collection_association.rb +251 -177
  22. data/lib/active_record/associations/collection_proxy.rb +963 -63
  23. data/lib/active_record/associations/foreign_association.rb +11 -0
  24. data/lib/active_record/associations/has_many_association.rb +113 -22
  25. data/lib/active_record/associations/has_many_through_association.rb +99 -39
  26. data/lib/active_record/associations/has_one_association.rb +43 -20
  27. data/lib/active_record/associations/has_one_through_association.rb +1 -1
  28. data/lib/active_record/associations/join_dependency/join_association.rb +76 -107
  29. data/lib/active_record/associations/join_dependency/join_base.rb +7 -9
  30. data/lib/active_record/associations/join_dependency/join_part.rb +30 -37
  31. data/lib/active_record/associations/join_dependency.rb +230 -156
  32. data/lib/active_record/associations/preloader/association.rb +96 -55
  33. data/lib/active_record/associations/preloader/collection_association.rb +3 -3
  34. data/lib/active_record/associations/preloader/has_many_through.rb +7 -3
  35. data/lib/active_record/associations/preloader/has_one.rb +1 -1
  36. data/lib/active_record/associations/preloader/singular_association.rb +3 -3
  37. data/lib/active_record/associations/preloader/through_association.rb +62 -33
  38. data/lib/active_record/associations/preloader.rb +101 -79
  39. data/lib/active_record/associations/singular_association.rb +29 -13
  40. data/lib/active_record/associations/through_association.rb +30 -16
  41. data/lib/active_record/associations.rb +463 -345
  42. data/lib/active_record/attribute.rb +163 -0
  43. data/lib/active_record/attribute_assignment.rb +142 -151
  44. data/lib/active_record/attribute_decorators.rb +66 -0
  45. data/lib/active_record/attribute_methods/before_type_cast.rb +52 -7
  46. data/lib/active_record/attribute_methods/dirty.rb +137 -57
  47. data/lib/active_record/attribute_methods/primary_key.rb +50 -36
  48. data/lib/active_record/attribute_methods/query.rb +5 -4
  49. data/lib/active_record/attribute_methods/read.rb +73 -106
  50. data/lib/active_record/attribute_methods/serialization.rb +44 -94
  51. data/lib/active_record/attribute_methods/time_zone_conversion.rb +49 -45
  52. data/lib/active_record/attribute_methods/write.rb +57 -44
  53. data/lib/active_record/attribute_methods.rb +301 -141
  54. data/lib/active_record/attribute_set/builder.rb +106 -0
  55. data/lib/active_record/attribute_set.rb +81 -0
  56. data/lib/active_record/attributes.rb +147 -0
  57. data/lib/active_record/autosave_association.rb +246 -217
  58. data/lib/active_record/base.rb +70 -474
  59. data/lib/active_record/callbacks.rb +66 -28
  60. data/lib/active_record/coders/json.rb +13 -0
  61. data/lib/active_record/coders/yaml_column.rb +18 -21
  62. data/lib/active_record/connection_adapters/abstract/connection_pool.rb +396 -219
  63. data/lib/active_record/connection_adapters/abstract/database_limits.rb +9 -0
  64. data/lib/active_record/connection_adapters/abstract/database_statements.rb +167 -164
  65. data/lib/active_record/connection_adapters/abstract/query_cache.rb +29 -24
  66. data/lib/active_record/connection_adapters/abstract/quoting.rb +74 -55
  67. data/lib/active_record/connection_adapters/abstract/savepoints.rb +21 -0
  68. data/lib/active_record/connection_adapters/abstract/schema_creation.rb +125 -0
  69. data/lib/active_record/connection_adapters/abstract/schema_definitions.rb +261 -169
  70. data/lib/active_record/connection_adapters/abstract/schema_dumper.rb +50 -0
  71. data/lib/active_record/connection_adapters/abstract/schema_statements.rb +707 -259
  72. data/lib/active_record/connection_adapters/abstract/transaction.rb +215 -0
  73. data/lib/active_record/connection_adapters/abstract_adapter.rb +298 -89
  74. data/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +466 -196
  75. data/lib/active_record/connection_adapters/column.rb +31 -245
  76. data/lib/active_record/connection_adapters/connection_specification.rb +275 -0
  77. data/lib/active_record/connection_adapters/mysql2_adapter.rb +45 -57
  78. data/lib/active_record/connection_adapters/mysql_adapter.rb +180 -123
  79. data/lib/active_record/connection_adapters/postgresql/array_parser.rb +93 -0
  80. data/lib/active_record/connection_adapters/postgresql/column.rb +20 -0
  81. data/lib/active_record/connection_adapters/postgresql/database_statements.rb +232 -0
  82. data/lib/active_record/connection_adapters/postgresql/oid/array.rb +100 -0
  83. data/lib/active_record/connection_adapters/postgresql/oid/bit.rb +52 -0
  84. data/lib/active_record/connection_adapters/postgresql/oid/bit_varying.rb +13 -0
  85. data/lib/active_record/connection_adapters/postgresql/oid/bytea.rb +15 -0
  86. data/lib/active_record/connection_adapters/postgresql/oid/cidr.rb +46 -0
  87. data/lib/active_record/connection_adapters/postgresql/oid/date.rb +11 -0
  88. data/lib/active_record/connection_adapters/postgresql/oid/date_time.rb +36 -0
  89. data/lib/active_record/connection_adapters/postgresql/oid/decimal.rb +13 -0
  90. data/lib/active_record/connection_adapters/postgresql/oid/enum.rb +19 -0
  91. data/lib/active_record/connection_adapters/postgresql/oid/float.rb +21 -0
  92. data/lib/active_record/connection_adapters/postgresql/oid/hstore.rb +59 -0
  93. data/lib/active_record/connection_adapters/postgresql/oid/inet.rb +13 -0
  94. data/lib/active_record/connection_adapters/postgresql/oid/infinity.rb +13 -0
  95. data/lib/active_record/connection_adapters/postgresql/oid/integer.rb +11 -0
  96. data/lib/active_record/connection_adapters/postgresql/oid/json.rb +35 -0
  97. data/lib/active_record/connection_adapters/postgresql/oid/jsonb.rb +23 -0
  98. data/lib/active_record/connection_adapters/postgresql/oid/money.rb +43 -0
  99. data/lib/active_record/connection_adapters/postgresql/oid/point.rb +43 -0
  100. data/lib/active_record/connection_adapters/postgresql/oid/range.rb +79 -0
  101. data/lib/active_record/connection_adapters/postgresql/oid/specialized_string.rb +19 -0
  102. data/lib/active_record/connection_adapters/postgresql/oid/time.rb +11 -0
  103. data/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb +109 -0
  104. data/lib/active_record/connection_adapters/postgresql/oid/uuid.rb +21 -0
  105. data/lib/active_record/connection_adapters/postgresql/oid/vector.rb +26 -0
  106. data/lib/active_record/connection_adapters/postgresql/oid/xml.rb +28 -0
  107. data/lib/active_record/connection_adapters/postgresql/oid.rb +36 -0
  108. data/lib/active_record/connection_adapters/postgresql/quoting.rb +108 -0
  109. data/lib/active_record/connection_adapters/postgresql/referential_integrity.rb +30 -0
  110. data/lib/active_record/connection_adapters/postgresql/schema_definitions.rb +152 -0
  111. data/lib/active_record/connection_adapters/postgresql/schema_statements.rb +596 -0
  112. data/lib/active_record/connection_adapters/postgresql/utils.rb +77 -0
  113. data/lib/active_record/connection_adapters/postgresql_adapter.rb +430 -999
  114. data/lib/active_record/connection_adapters/schema_cache.rb +52 -27
  115. data/lib/active_record/connection_adapters/sqlite3_adapter.rb +579 -22
  116. data/lib/active_record/connection_handling.rb +132 -0
  117. data/lib/active_record/core.rb +579 -0
  118. data/lib/active_record/counter_cache.rb +157 -105
  119. data/lib/active_record/dynamic_matchers.rb +119 -63
  120. data/lib/active_record/enum.rb +197 -0
  121. data/lib/active_record/errors.rb +94 -36
  122. data/lib/active_record/explain.rb +15 -63
  123. data/lib/active_record/explain_registry.rb +30 -0
  124. data/lib/active_record/explain_subscriber.rb +9 -5
  125. data/lib/active_record/fixture_set/file.rb +56 -0
  126. data/lib/active_record/fixtures.rb +302 -215
  127. data/lib/active_record/gem_version.rb +15 -0
  128. data/lib/active_record/inheritance.rb +143 -70
  129. data/lib/active_record/integration.rb +65 -12
  130. data/lib/active_record/legacy_yaml_adapter.rb +30 -0
  131. data/lib/active_record/locale/en.yml +8 -1
  132. data/lib/active_record/locking/optimistic.rb +73 -52
  133. data/lib/active_record/locking/pessimistic.rb +5 -5
  134. data/lib/active_record/log_subscriber.rb +24 -21
  135. data/lib/active_record/migration/command_recorder.rb +124 -32
  136. data/lib/active_record/migration/join_table.rb +15 -0
  137. data/lib/active_record/migration.rb +511 -213
  138. data/lib/active_record/model_schema.rb +91 -117
  139. data/lib/active_record/nested_attributes.rb +184 -130
  140. data/lib/active_record/no_touching.rb +52 -0
  141. data/lib/active_record/null_relation.rb +81 -0
  142. data/lib/active_record/persistence.rb +276 -117
  143. data/lib/active_record/query_cache.rb +19 -37
  144. data/lib/active_record/querying.rb +28 -18
  145. data/lib/active_record/railtie.rb +73 -40
  146. data/lib/active_record/railties/console_sandbox.rb +3 -4
  147. data/lib/active_record/railties/controller_runtime.rb +4 -3
  148. data/lib/active_record/railties/databases.rake +141 -416
  149. data/lib/active_record/railties/jdbcmysql_error.rb +1 -1
  150. data/lib/active_record/readonly_attributes.rb +1 -4
  151. data/lib/active_record/reflection.rb +513 -154
  152. data/lib/active_record/relation/batches.rb +91 -43
  153. data/lib/active_record/relation/calculations.rb +199 -161
  154. data/lib/active_record/relation/delegation.rb +116 -25
  155. data/lib/active_record/relation/finder_methods.rb +362 -248
  156. data/lib/active_record/relation/merger.rb +193 -0
  157. data/lib/active_record/relation/predicate_builder/array_handler.rb +48 -0
  158. data/lib/active_record/relation/predicate_builder/relation_handler.rb +13 -0
  159. data/lib/active_record/relation/predicate_builder.rb +135 -43
  160. data/lib/active_record/relation/query_methods.rb +928 -167
  161. data/lib/active_record/relation/spawn_methods.rb +48 -149
  162. data/lib/active_record/relation.rb +352 -207
  163. data/lib/active_record/result.rb +101 -10
  164. data/lib/active_record/runtime_registry.rb +22 -0
  165. data/lib/active_record/sanitization.rb +56 -59
  166. data/lib/active_record/schema.rb +19 -13
  167. data/lib/active_record/schema_dumper.rb +106 -63
  168. data/lib/active_record/schema_migration.rb +53 -0
  169. data/lib/active_record/scoping/default.rb +50 -57
  170. data/lib/active_record/scoping/named.rb +73 -109
  171. data/lib/active_record/scoping.rb +58 -123
  172. data/lib/active_record/serialization.rb +6 -2
  173. data/lib/active_record/serializers/xml_serializer.rb +12 -22
  174. data/lib/active_record/statement_cache.rb +111 -0
  175. data/lib/active_record/store.rb +168 -15
  176. data/lib/active_record/tasks/database_tasks.rb +299 -0
  177. data/lib/active_record/tasks/mysql_database_tasks.rb +159 -0
  178. data/lib/active_record/tasks/postgresql_database_tasks.rb +101 -0
  179. data/lib/active_record/tasks/sqlite_database_tasks.rb +55 -0
  180. data/lib/active_record/timestamp.rb +23 -16
  181. data/lib/active_record/transactions.rb +125 -79
  182. data/lib/active_record/type/big_integer.rb +13 -0
  183. data/lib/active_record/type/binary.rb +50 -0
  184. data/lib/active_record/type/boolean.rb +31 -0
  185. data/lib/active_record/type/date.rb +50 -0
  186. data/lib/active_record/type/date_time.rb +54 -0
  187. data/lib/active_record/type/decimal.rb +64 -0
  188. data/lib/active_record/type/decimal_without_scale.rb +11 -0
  189. data/lib/active_record/type/decorator.rb +14 -0
  190. data/lib/active_record/type/float.rb +19 -0
  191. data/lib/active_record/type/hash_lookup_type_map.rb +23 -0
  192. data/lib/active_record/type/integer.rb +59 -0
  193. data/lib/active_record/type/mutable.rb +16 -0
  194. data/lib/active_record/type/numeric.rb +36 -0
  195. data/lib/active_record/type/serialized.rb +62 -0
  196. data/lib/active_record/type/string.rb +40 -0
  197. data/lib/active_record/type/text.rb +11 -0
  198. data/lib/active_record/type/time.rb +26 -0
  199. data/lib/active_record/type/time_value.rb +38 -0
  200. data/lib/active_record/type/type_map.rb +64 -0
  201. data/lib/active_record/type/unsigned_integer.rb +15 -0
  202. data/lib/active_record/type/value.rb +110 -0
  203. data/lib/active_record/type.rb +23 -0
  204. data/lib/active_record/validations/associated.rb +24 -16
  205. data/lib/active_record/validations/presence.rb +67 -0
  206. data/lib/active_record/validations/uniqueness.rb +123 -64
  207. data/lib/active_record/validations.rb +36 -29
  208. data/lib/active_record/version.rb +5 -7
  209. data/lib/active_record.rb +66 -46
  210. data/lib/rails/generators/active_record/migration/migration_generator.rb +53 -8
  211. data/lib/rails/generators/active_record/{model/templates/migration.rb → migration/templates/create_table_migration.rb} +5 -1
  212. data/lib/rails/generators/active_record/migration/templates/migration.rb +20 -15
  213. data/lib/rails/generators/active_record/migration.rb +11 -8
  214. data/lib/rails/generators/active_record/model/model_generator.rb +9 -4
  215. data/lib/rails/generators/active_record/model/templates/model.rb +4 -6
  216. data/lib/rails/generators/active_record/model/templates/module.rb +1 -1
  217. data/lib/rails/generators/active_record.rb +3 -11
  218. metadata +101 -45
  219. data/examples/associations.png +0 -0
  220. data/lib/active_record/associations/has_and_belongs_to_many_association.rb +0 -63
  221. data/lib/active_record/associations/join_helper.rb +0 -55
  222. data/lib/active_record/associations/preloader/has_and_belongs_to_many.rb +0 -60
  223. data/lib/active_record/attribute_methods/deprecated_underscore_read.rb +0 -32
  224. data/lib/active_record/connection_adapters/abstract/connection_specification.rb +0 -191
  225. data/lib/active_record/connection_adapters/sqlite_adapter.rb +0 -583
  226. data/lib/active_record/dynamic_finder_match.rb +0 -68
  227. data/lib/active_record/dynamic_scope_match.rb +0 -23
  228. data/lib/active_record/fixtures/file.rb +0 -65
  229. data/lib/active_record/identity_map.rb +0 -162
  230. data/lib/active_record/observer.rb +0 -121
  231. data/lib/active_record/session_store.rb +0 -360
  232. data/lib/active_record/test_case.rb +0 -73
  233. data/lib/rails/generators/active_record/observer/observer_generator.rb +0 -15
  234. data/lib/rails/generators/active_record/observer/templates/observer.rb +0 -4
  235. data/lib/rails/generators/active_record/session_migration/session_migration_generator.rb +0 -25
  236. data/lib/rails/generators/active_record/session_migration/templates/migration.rb +0 -12
@@ -2,32 +2,37 @@ class <%= migration_class_name %> < ActiveRecord::Migration
2
2
  <%- if migration_action == 'add' -%>
3
3
  def change
4
4
  <% attributes.each do |attribute| -%>
5
+ <%- if attribute.reference? -%>
6
+ add_reference :<%= table_name %>, :<%= attribute.name %><%= attribute.inject_options %>
7
+ <%- else -%>
5
8
  add_column :<%= table_name %>, :<%= attribute.name %>, :<%= attribute.type %><%= attribute.inject_options %>
6
9
  <%- if attribute.has_index? -%>
7
10
  add_index :<%= table_name %>, :<%= attribute.index_name %><%= attribute.inject_index_options %>
8
11
  <%- end -%>
12
+ <%- end -%>
9
13
  <%- end -%>
10
14
  end
15
+ <%- elsif migration_action == 'join' -%>
16
+ def change
17
+ create_join_table :<%= join_tables.first %>, :<%= join_tables.second %> do |t|
18
+ <%- attributes.each do |attribute| -%>
19
+ <%= '# ' unless attribute.has_index? -%>t.index <%= attribute.index_name %><%= attribute.inject_index_options %>
20
+ <%- end -%>
21
+ end
22
+ end
11
23
  <%- else -%>
12
- def up
24
+ def change
13
25
  <% attributes.each do |attribute| -%>
14
- <%- if migration_action -%>
15
- <%= migration_action %>_column :<%= table_name %>, :<%= attribute.name %><% if migration_action == 'add' %>, :<%= attribute.type %><%= attribute.inject_options %><% end %>
16
- <%- if attribute.has_index? && migration_action == 'add' -%>
17
- add_index :<%= table_name %>, :<%= attribute.index_name %><%= attribute.inject_index_options %>
26
+ <%- if migration_action -%>
27
+ <%- if attribute.reference? -%>
28
+ remove_reference :<%= table_name %>, :<%= attribute.name %><%= attribute.inject_options %>
29
+ <%- else -%>
30
+ <%- if attribute.has_index? -%>
31
+ remove_index :<%= table_name %>, :<%= attribute.index_name %><%= attribute.inject_index_options %>
18
32
  <%- end -%>
33
+ remove_column :<%= table_name %>, :<%= attribute.name %>, :<%= attribute.type %><%= attribute.inject_options %>
19
34
  <%- end -%>
20
35
  <%- end -%>
21
- end
22
-
23
- def down
24
- <% attributes.reverse.each do |attribute| -%>
25
- <%- if migration_action -%>
26
- <%= migration_action == 'add' ? 'remove' : 'add' %>_column :<%= table_name %>, :<%= attribute.name %><% if migration_action == 'remove' %>, :<%= attribute.type %><%= attribute.inject_options %><% end %>
27
- <%- if attribute.has_index? && migration_action == 'remove' -%>
28
- add_index :<%= table_name %>, :<%= attribute.index_name %><%= attribute.inject_index_options %>
29
- <%- end -%>
30
- <%- end -%>
31
36
  <%- end -%>
32
37
  end
33
38
  <%- end -%>
@@ -1,13 +1,16 @@
1
+ require 'rails/generators/migration'
2
+
1
3
  module ActiveRecord
2
- module Generators
4
+ module Generators # :nodoc:
3
5
  module Migration
4
- # Implement the required interface for Rails::Generators::Migration.
5
- def next_migration_number(dirname) #:nodoc:
6
- next_migration_number = current_migration_number(dirname) + 1
7
- if ActiveRecord::Base.timestamped_migrations
8
- [Time.now.utc.strftime("%Y%m%d%H%M%S"), "%.14d" % next_migration_number].max
9
- else
10
- "%.3d" % next_migration_number
6
+ extend ActiveSupport::Concern
7
+ include Rails::Generators::Migration
8
+
9
+ module ClassMethods
10
+ # Implement the required interface for Rails::Generators::Migration.
11
+ def next_migration_number(dirname)
12
+ next_migration_number = current_migration_number(dirname) + 1
13
+ ActiveRecord::Migration.next_migration_number(next_migration_number)
11
14
  end
12
15
  end
13
16
  end
@@ -1,8 +1,8 @@
1
1
  require 'rails/generators/active_record'
2
2
 
3
3
  module ActiveRecord
4
- module Generators
5
- class ModelGenerator < Base
4
+ module Generators # :nodoc:
5
+ class ModelGenerator < Base # :nodoc:
6
6
  argument :attributes, :type => :array, :default => [], :banner => "field[:type][:index] field[:type][:index]"
7
7
 
8
8
  check_class_collision
@@ -12,9 +12,13 @@ module ActiveRecord
12
12
  class_option :parent, :type => :string, :desc => "The parent class for the generated model"
13
13
  class_option :indexes, :type => :boolean, :default => true, :desc => "Add indexes for references and belongs_to columns"
14
14
 
15
+
16
+ # creates the migration file for the model.
17
+
15
18
  def create_migration_file
16
19
  return unless options[:migration] && options[:parent].nil?
17
- migration_template "migration.rb", "db/migrate/create_#{table_name}.rb"
20
+ 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"
18
22
  end
19
23
 
20
24
  def create_model_file
@@ -27,7 +31,7 @@ module ActiveRecord
27
31
  end
28
32
 
29
33
  def attributes_with_index
30
- attributes.select { |a| a.has_index? || (a.reference? && options[:indexes]) }
34
+ attributes.select { |a| !a.reference? && a.has_index? }
31
35
  end
32
36
 
33
37
  def accessible_attributes
@@ -38,6 +42,7 @@ module ActiveRecord
38
42
 
39
43
  protected
40
44
 
45
+ # Used by the migration template to determine the parent name of the model
41
46
  def parent_class_name
42
47
  options[:parent] || "ActiveRecord::Base"
43
48
  end
@@ -1,12 +1,10 @@
1
1
  <% module_namespacing do -%>
2
2
  class <%= class_name %> < <%= parent_class_name.classify %>
3
- <% attributes.select {|attr| attr.reference? }.each do |attribute| -%>
4
- belongs_to :<%= attribute.name %>
3
+ <% attributes.select(&:reference?).each do |attribute| -%>
4
+ belongs_to :<%= attribute.name %><%= ', polymorphic: true' if attribute.polymorphic? %><%= ', required: true' if attribute.required? %>
5
5
  <% end -%>
6
- <% if !accessible_attributes.empty? -%>
7
- attr_accessible <%= accessible_attributes.map {|a| ":#{a.name}" }.sort.join(', ') %>
8
- <% else -%>
9
- # attr_accessible :title, :body
6
+ <% if attributes.any?(&:password_digest?) -%>
7
+ has_secure_password
10
8
  <% end -%>
11
9
  end
12
10
  <% end -%>
@@ -1,7 +1,7 @@
1
1
  <% module_namespacing do -%>
2
2
  module <%= class_path.map(&:camelize).join('::') %>
3
3
  def self.table_name_prefix
4
- '<%= class_path.join('_') %>_'
4
+ '<%= namespaced? ? namespaced_class_path.join('_') : class_path.join('_') %>_'
5
5
  end
6
6
  end
7
7
  <% end -%>
@@ -1,25 +1,17 @@
1
1
  require 'rails/generators/named_base'
2
- require 'rails/generators/migration'
3
2
  require 'rails/generators/active_model'
4
3
  require 'rails/generators/active_record/migration'
5
4
  require 'active_record'
6
5
 
7
6
  module ActiveRecord
8
- module Generators
9
- class Base < Rails::Generators::NamedBase #:nodoc:
10
- include Rails::Generators::Migration
11
- extend ActiveRecord::Generators::Migration
7
+ module Generators # :nodoc:
8
+ class Base < Rails::Generators::NamedBase # :nodoc:
9
+ include ActiveRecord::Generators::Migration
12
10
 
13
11
  # Set the current directory as base for the inherited generators.
14
12
  def self.base_root
15
13
  File.dirname(__FILE__)
16
14
  end
17
-
18
- # Implement the required interface for Rails::Generators::Migration.
19
- def self.next_migration_number(dirname) #:nodoc:
20
- next_migration_number = current_migration_number(dirname) + 1
21
- ActiveRecord::Migration.next_migration_number(next_migration_number)
22
- end
23
15
  end
24
16
  end
25
17
  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: 3.2.22.5
4
+ version: 4.2.11.3
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: 2016-09-14 00:00:00.000000000 Z
11
+ date: 2020-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,56 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 3.2.22.5
19
+ version: 4.2.11.3
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: 3.2.22.5
26
+ version: 4.2.11.3
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: 3.2.22.5
33
+ version: 4.2.11.3
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: 3.2.22.5
40
+ version: 4.2.11.3
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: 3.0.2
47
+ version: '6.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: 3.0.2
55
- - !ruby/object:Gem::Dependency
56
- name: tzinfo
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: 0.3.29
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: 0.3.29
54
+ version: '6.0'
69
55
  description: Databases on Rails. Build a persistent domain model by mapping database
70
56
  tables to Ruby classes. Strong conventions for associations, validations, aggregations,
71
57
  migrations, and testing come baked-in.
@@ -78,11 +64,11 @@ files:
78
64
  - CHANGELOG.md
79
65
  - MIT-LICENSE
80
66
  - README.rdoc
81
- - examples/associations.png
82
67
  - examples/performance.rb
83
68
  - examples/simple.rb
84
69
  - lib/active_record.rb
85
70
  - lib/active_record/aggregations.rb
71
+ - lib/active_record/association_relation.rb
86
72
  - lib/active_record/associations.rb
87
73
  - lib/active_record/associations/alias_tracker.rb
88
74
  - lib/active_record/associations/association.rb
@@ -98,7 +84,7 @@ files:
98
84
  - lib/active_record/associations/builder/singular_association.rb
99
85
  - lib/active_record/associations/collection_association.rb
100
86
  - lib/active_record/associations/collection_proxy.rb
101
- - lib/active_record/associations/has_and_belongs_to_many_association.rb
87
+ - lib/active_record/associations/foreign_association.rb
102
88
  - lib/active_record/associations/has_many_association.rb
103
89
  - lib/active_record/associations/has_many_through_association.rb
104
90
  - lib/active_record/associations/has_one_association.rb
@@ -107,12 +93,10 @@ files:
107
93
  - lib/active_record/associations/join_dependency/join_association.rb
108
94
  - lib/active_record/associations/join_dependency/join_base.rb
109
95
  - lib/active_record/associations/join_dependency/join_part.rb
110
- - lib/active_record/associations/join_helper.rb
111
96
  - lib/active_record/associations/preloader.rb
112
97
  - lib/active_record/associations/preloader/association.rb
113
98
  - lib/active_record/associations/preloader/belongs_to.rb
114
99
  - lib/active_record/associations/preloader/collection_association.rb
115
- - lib/active_record/associations/preloader/has_and_belongs_to_many.rb
116
100
  - lib/active_record/associations/preloader/has_many.rb
117
101
  - lib/active_record/associations/preloader/has_many_through.rb
118
102
  - lib/active_record/associations/preloader/has_one.rb
@@ -121,10 +105,11 @@ files:
121
105
  - lib/active_record/associations/preloader/through_association.rb
122
106
  - lib/active_record/associations/singular_association.rb
123
107
  - lib/active_record/associations/through_association.rb
108
+ - lib/active_record/attribute.rb
124
109
  - lib/active_record/attribute_assignment.rb
110
+ - lib/active_record/attribute_decorators.rb
125
111
  - lib/active_record/attribute_methods.rb
126
112
  - lib/active_record/attribute_methods/before_type_cast.rb
127
- - lib/active_record/attribute_methods/deprecated_underscore_read.rb
128
113
  - lib/active_record/attribute_methods/dirty.rb
129
114
  - lib/active_record/attribute_methods/primary_key.rb
130
115
  - lib/active_record/attribute_methods/query.rb
@@ -132,49 +117,95 @@ files:
132
117
  - lib/active_record/attribute_methods/serialization.rb
133
118
  - lib/active_record/attribute_methods/time_zone_conversion.rb
134
119
  - lib/active_record/attribute_methods/write.rb
120
+ - lib/active_record/attribute_set.rb
121
+ - lib/active_record/attribute_set/builder.rb
122
+ - lib/active_record/attributes.rb
135
123
  - lib/active_record/autosave_association.rb
136
124
  - lib/active_record/base.rb
137
125
  - lib/active_record/callbacks.rb
126
+ - lib/active_record/coders/json.rb
138
127
  - lib/active_record/coders/yaml_column.rb
139
128
  - lib/active_record/connection_adapters/abstract/connection_pool.rb
140
- - lib/active_record/connection_adapters/abstract/connection_specification.rb
141
129
  - lib/active_record/connection_adapters/abstract/database_limits.rb
142
130
  - lib/active_record/connection_adapters/abstract/database_statements.rb
143
131
  - lib/active_record/connection_adapters/abstract/query_cache.rb
144
132
  - lib/active_record/connection_adapters/abstract/quoting.rb
133
+ - lib/active_record/connection_adapters/abstract/savepoints.rb
134
+ - lib/active_record/connection_adapters/abstract/schema_creation.rb
145
135
  - lib/active_record/connection_adapters/abstract/schema_definitions.rb
136
+ - lib/active_record/connection_adapters/abstract/schema_dumper.rb
146
137
  - lib/active_record/connection_adapters/abstract/schema_statements.rb
138
+ - lib/active_record/connection_adapters/abstract/transaction.rb
147
139
  - lib/active_record/connection_adapters/abstract_adapter.rb
148
140
  - lib/active_record/connection_adapters/abstract_mysql_adapter.rb
149
141
  - lib/active_record/connection_adapters/column.rb
142
+ - lib/active_record/connection_adapters/connection_specification.rb
150
143
  - lib/active_record/connection_adapters/mysql2_adapter.rb
151
144
  - lib/active_record/connection_adapters/mysql_adapter.rb
145
+ - lib/active_record/connection_adapters/postgresql/array_parser.rb
146
+ - lib/active_record/connection_adapters/postgresql/column.rb
147
+ - lib/active_record/connection_adapters/postgresql/database_statements.rb
148
+ - lib/active_record/connection_adapters/postgresql/oid.rb
149
+ - lib/active_record/connection_adapters/postgresql/oid/array.rb
150
+ - lib/active_record/connection_adapters/postgresql/oid/bit.rb
151
+ - lib/active_record/connection_adapters/postgresql/oid/bit_varying.rb
152
+ - lib/active_record/connection_adapters/postgresql/oid/bytea.rb
153
+ - lib/active_record/connection_adapters/postgresql/oid/cidr.rb
154
+ - lib/active_record/connection_adapters/postgresql/oid/date.rb
155
+ - lib/active_record/connection_adapters/postgresql/oid/date_time.rb
156
+ - lib/active_record/connection_adapters/postgresql/oid/decimal.rb
157
+ - lib/active_record/connection_adapters/postgresql/oid/enum.rb
158
+ - lib/active_record/connection_adapters/postgresql/oid/float.rb
159
+ - lib/active_record/connection_adapters/postgresql/oid/hstore.rb
160
+ - 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
+ - lib/active_record/connection_adapters/postgresql/oid/jsonb.rb
165
+ - lib/active_record/connection_adapters/postgresql/oid/money.rb
166
+ - lib/active_record/connection_adapters/postgresql/oid/point.rb
167
+ - lib/active_record/connection_adapters/postgresql/oid/range.rb
168
+ - lib/active_record/connection_adapters/postgresql/oid/specialized_string.rb
169
+ - lib/active_record/connection_adapters/postgresql/oid/time.rb
170
+ - lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb
171
+ - lib/active_record/connection_adapters/postgresql/oid/uuid.rb
172
+ - lib/active_record/connection_adapters/postgresql/oid/vector.rb
173
+ - lib/active_record/connection_adapters/postgresql/oid/xml.rb
174
+ - lib/active_record/connection_adapters/postgresql/quoting.rb
175
+ - lib/active_record/connection_adapters/postgresql/referential_integrity.rb
176
+ - lib/active_record/connection_adapters/postgresql/schema_definitions.rb
177
+ - lib/active_record/connection_adapters/postgresql/schema_statements.rb
178
+ - lib/active_record/connection_adapters/postgresql/utils.rb
152
179
  - lib/active_record/connection_adapters/postgresql_adapter.rb
153
180
  - lib/active_record/connection_adapters/schema_cache.rb
154
181
  - lib/active_record/connection_adapters/sqlite3_adapter.rb
155
- - lib/active_record/connection_adapters/sqlite_adapter.rb
156
182
  - lib/active_record/connection_adapters/statement_pool.rb
183
+ - lib/active_record/connection_handling.rb
184
+ - lib/active_record/core.rb
157
185
  - lib/active_record/counter_cache.rb
158
- - lib/active_record/dynamic_finder_match.rb
159
186
  - lib/active_record/dynamic_matchers.rb
160
- - lib/active_record/dynamic_scope_match.rb
187
+ - lib/active_record/enum.rb
161
188
  - lib/active_record/errors.rb
162
189
  - lib/active_record/explain.rb
190
+ - lib/active_record/explain_registry.rb
163
191
  - lib/active_record/explain_subscriber.rb
192
+ - lib/active_record/fixture_set/file.rb
164
193
  - lib/active_record/fixtures.rb
165
- - lib/active_record/fixtures/file.rb
166
- - lib/active_record/identity_map.rb
194
+ - lib/active_record/gem_version.rb
167
195
  - lib/active_record/inheritance.rb
168
196
  - lib/active_record/integration.rb
197
+ - lib/active_record/legacy_yaml_adapter.rb
169
198
  - lib/active_record/locale/en.yml
170
199
  - lib/active_record/locking/optimistic.rb
171
200
  - lib/active_record/locking/pessimistic.rb
172
201
  - lib/active_record/log_subscriber.rb
173
202
  - lib/active_record/migration.rb
174
203
  - lib/active_record/migration/command_recorder.rb
204
+ - lib/active_record/migration/join_table.rb
175
205
  - lib/active_record/model_schema.rb
176
206
  - lib/active_record/nested_attributes.rb
177
- - lib/active_record/observer.rb
207
+ - lib/active_record/no_touching.rb
208
+ - lib/active_record/null_relation.rb
178
209
  - lib/active_record/persistence.rb
179
210
  - lib/active_record/query_cache.rb
180
211
  - lib/active_record/querying.rb
@@ -190,40 +221,67 @@ files:
190
221
  - lib/active_record/relation/calculations.rb
191
222
  - lib/active_record/relation/delegation.rb
192
223
  - lib/active_record/relation/finder_methods.rb
224
+ - lib/active_record/relation/merger.rb
193
225
  - lib/active_record/relation/predicate_builder.rb
226
+ - lib/active_record/relation/predicate_builder/array_handler.rb
227
+ - lib/active_record/relation/predicate_builder/relation_handler.rb
194
228
  - lib/active_record/relation/query_methods.rb
195
229
  - lib/active_record/relation/spawn_methods.rb
196
230
  - lib/active_record/result.rb
231
+ - lib/active_record/runtime_registry.rb
197
232
  - lib/active_record/sanitization.rb
198
233
  - lib/active_record/schema.rb
199
234
  - lib/active_record/schema_dumper.rb
235
+ - lib/active_record/schema_migration.rb
200
236
  - lib/active_record/scoping.rb
201
237
  - lib/active_record/scoping/default.rb
202
238
  - lib/active_record/scoping/named.rb
203
239
  - lib/active_record/serialization.rb
204
240
  - lib/active_record/serializers/xml_serializer.rb
205
- - lib/active_record/session_store.rb
241
+ - lib/active_record/statement_cache.rb
206
242
  - lib/active_record/store.rb
207
- - lib/active_record/test_case.rb
243
+ - lib/active_record/tasks/database_tasks.rb
244
+ - lib/active_record/tasks/mysql_database_tasks.rb
245
+ - lib/active_record/tasks/postgresql_database_tasks.rb
246
+ - lib/active_record/tasks/sqlite_database_tasks.rb
208
247
  - lib/active_record/timestamp.rb
209
248
  - lib/active_record/transactions.rb
210
249
  - lib/active_record/translation.rb
250
+ - 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
254
+ - lib/active_record/type/date.rb
255
+ - lib/active_record/type/date_time.rb
256
+ - lib/active_record/type/decimal.rb
257
+ - lib/active_record/type/decimal_without_scale.rb
258
+ - lib/active_record/type/decorator.rb
259
+ - lib/active_record/type/float.rb
260
+ - 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
264
+ - lib/active_record/type/serialized.rb
265
+ - lib/active_record/type/string.rb
266
+ - lib/active_record/type/text.rb
267
+ - lib/active_record/type/time.rb
268
+ - lib/active_record/type/time_value.rb
269
+ - lib/active_record/type/type_map.rb
270
+ - lib/active_record/type/unsigned_integer.rb
271
+ - lib/active_record/type/value.rb
211
272
  - lib/active_record/validations.rb
212
273
  - lib/active_record/validations/associated.rb
274
+ - lib/active_record/validations/presence.rb
213
275
  - lib/active_record/validations/uniqueness.rb
214
276
  - lib/active_record/version.rb
215
277
  - lib/rails/generators/active_record.rb
216
278
  - lib/rails/generators/active_record/migration.rb
217
279
  - lib/rails/generators/active_record/migration/migration_generator.rb
280
+ - lib/rails/generators/active_record/migration/templates/create_table_migration.rb
218
281
  - lib/rails/generators/active_record/migration/templates/migration.rb
219
282
  - lib/rails/generators/active_record/model/model_generator.rb
220
- - lib/rails/generators/active_record/model/templates/migration.rb
221
283
  - lib/rails/generators/active_record/model/templates/model.rb
222
284
  - lib/rails/generators/active_record/model/templates/module.rb
223
- - lib/rails/generators/active_record/observer/observer_generator.rb
224
- - lib/rails/generators/active_record/observer/templates/observer.rb
225
- - lib/rails/generators/active_record/session_migration/session_migration_generator.rb
226
- - lib/rails/generators/active_record/session_migration/templates/migration.rb
227
285
  homepage: http://www.rubyonrails.org
228
286
  licenses:
229
287
  - MIT
@@ -238,17 +296,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
238
296
  requirements:
239
297
  - - ">="
240
298
  - !ruby/object:Gem::Version
241
- version: 1.8.7
299
+ version: 1.9.3
242
300
  required_rubygems_version: !ruby/object:Gem::Requirement
243
301
  requirements:
244
302
  - - ">="
245
303
  - !ruby/object:Gem::Version
246
304
  version: '0'
247
305
  requirements: []
248
- rubyforge_project:
249
- rubygems_version: 2.6.6
306
+ rubygems_version: 3.0.3
250
307
  signing_key:
251
308
  specification_version: 4
252
309
  summary: Object-relational mapper framework (part of Rails).
253
310
  test_files: []
254
- has_rdoc:
Binary file
@@ -1,63 +0,0 @@
1
- module ActiveRecord
2
- # = Active Record Has And Belongs To Many Association
3
- module Associations
4
- class HasAndBelongsToManyAssociation < CollectionAssociation #:nodoc:
5
- attr_reader :join_table
6
-
7
- def initialize(owner, reflection)
8
- @join_table = Arel::Table.new(reflection.options[:join_table])
9
- super
10
- end
11
-
12
- def insert_record(record, validate = true, raise = false)
13
- if record.new_record?
14
- if raise
15
- record.save!(:validate => validate)
16
- else
17
- return unless record.save(:validate => validate)
18
- end
19
- end
20
-
21
- if options[:insert_sql]
22
- owner.connection.insert(interpolate(options[:insert_sql], record))
23
- else
24
- stmt = join_table.compile_insert(
25
- join_table[reflection.foreign_key] => owner.id,
26
- join_table[reflection.association_foreign_key] => record.id
27
- )
28
-
29
- owner.connection.insert stmt
30
- end
31
-
32
- record
33
- end
34
-
35
- # ActiveRecord::Relation#delete_all needs to support joins before we can use a
36
- # SQL-only implementation.
37
- alias delete_all_on_destroy delete_all
38
-
39
- private
40
-
41
- def count_records
42
- load_target.size
43
- end
44
-
45
- def delete_records(records, method)
46
- if sql = options[:delete_sql]
47
- records = load_target if records == :all
48
- records.each { |record| owner.connection.delete(interpolate(sql, record)) }
49
- else
50
- relation = join_table
51
- stmt = relation.where(relation[reflection.foreign_key].eq(owner.id).
52
- and(relation[reflection.association_foreign_key].in(records.map { |x| x.id }.compact))
53
- ).compile_delete
54
- owner.connection.delete stmt
55
- end
56
- end
57
-
58
- def invertible_for?(record)
59
- false
60
- end
61
- end
62
- end
63
- end
@@ -1,55 +0,0 @@
1
- module ActiveRecord
2
- module Associations
3
- # Helper class module which gets mixed into JoinDependency::JoinAssociation and AssociationScope
4
- module JoinHelper #:nodoc:
5
-
6
- def join_type
7
- Arel::InnerJoin
8
- end
9
-
10
- private
11
-
12
- def construct_tables
13
- tables = []
14
- chain.each do |reflection|
15
- tables << alias_tracker.aliased_table_for(
16
- table_name_for(reflection),
17
- table_alias_for(reflection, reflection != self.reflection)
18
- )
19
-
20
- if reflection.source_macro == :has_and_belongs_to_many
21
- tables << alias_tracker.aliased_table_for(
22
- (reflection.source_reflection || reflection).options[:join_table],
23
- table_alias_for(reflection, true)
24
- )
25
- end
26
- end
27
- tables
28
- end
29
-
30
- def table_name_for(reflection)
31
- reflection.table_name
32
- end
33
-
34
- def table_alias_for(reflection, join = false)
35
- name = "#{reflection.plural_name}_#{alias_suffix}"
36
- name << "_join" if join
37
- name
38
- end
39
-
40
- def join(table, constraint)
41
- table.create_join(table, table.create_on(constraint), join_type)
42
- end
43
-
44
- def sanitize(conditions, table)
45
- conditions = conditions.map do |condition|
46
- condition = active_record.send(:sanitize_sql, interpolate(condition), table.table_alias || table.name)
47
- condition = Arel.sql(condition) unless condition.is_a?(Arel::Node)
48
- condition
49
- end
50
-
51
- conditions.length == 1 ? conditions.first : Arel::Nodes::And.new(conditions)
52
- end
53
- end
54
- end
55
- end