activerecord 5.1.7 → 5.2.0.beta1
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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +221 -900
- data/README.rdoc +3 -3
- data/examples/performance.rb +2 -0
- data/examples/simple.rb +2 -0
- data/lib/active_record.rb +10 -3
- data/lib/active_record/aggregations.rb +2 -0
- data/lib/active_record/association_relation.rb +2 -0
- data/lib/active_record/associations.rb +13 -42
- data/lib/active_record/associations/alias_tracker.rb +17 -17
- data/lib/active_record/associations/association.rb +11 -22
- data/lib/active_record/associations/association_scope.rb +32 -44
- data/lib/active_record/associations/belongs_to_association.rb +6 -4
- data/lib/active_record/associations/belongs_to_polymorphic_association.rb +3 -1
- data/lib/active_record/associations/builder/association.rb +2 -5
- data/lib/active_record/associations/builder/belongs_to.rb +7 -12
- data/lib/active_record/associations/builder/collection_association.rb +1 -1
- data/lib/active_record/associations/builder/has_and_belongs_to_many.rb +3 -1
- data/lib/active_record/associations/builder/has_many.rb +2 -0
- data/lib/active_record/associations/builder/has_one.rb +2 -0
- data/lib/active_record/associations/builder/singular_association.rb +2 -0
- data/lib/active_record/associations/collection_association.rb +41 -33
- data/lib/active_record/associations/collection_proxy.rb +11 -14
- data/lib/active_record/associations/foreign_association.rb +2 -0
- data/lib/active_record/associations/has_many_association.rb +4 -2
- data/lib/active_record/associations/has_many_through_association.rb +4 -2
- data/lib/active_record/associations/has_one_association.rb +3 -1
- data/lib/active_record/associations/has_one_through_association.rb +3 -1
- data/lib/active_record/associations/join_dependency.rb +22 -40
- data/lib/active_record/associations/join_dependency/join_association.rb +17 -56
- data/lib/active_record/associations/join_dependency/join_base.rb +9 -8
- data/lib/active_record/associations/join_dependency/join_part.rb +2 -9
- data/lib/active_record/associations/preloader.rb +17 -37
- data/lib/active_record/associations/preloader/association.rb +42 -58
- data/lib/active_record/associations/preloader/through_association.rb +71 -79
- data/lib/active_record/associations/singular_association.rb +14 -10
- data/lib/active_record/associations/through_association.rb +3 -1
- data/lib/active_record/attribute_assignment.rb +2 -0
- data/lib/active_record/attribute_decorators.rb +3 -2
- data/lib/active_record/attribute_methods.rb +47 -7
- data/lib/active_record/attribute_methods/before_type_cast.rb +2 -0
- data/lib/active_record/attribute_methods/dirty.rb +25 -214
- data/lib/active_record/attribute_methods/primary_key.rb +7 -6
- data/lib/active_record/attribute_methods/query.rb +2 -0
- data/lib/active_record/attribute_methods/read.rb +8 -2
- data/lib/active_record/attribute_methods/serialization.rb +23 -0
- data/lib/active_record/attribute_methods/time_zone_conversion.rb +6 -8
- data/lib/active_record/attribute_methods/write.rb +21 -9
- data/lib/active_record/attributes.rb +7 -6
- data/lib/active_record/autosave_association.rb +5 -11
- data/lib/active_record/base.rb +2 -0
- data/lib/active_record/callbacks.rb +6 -8
- data/lib/active_record/coders/json.rb +2 -0
- data/lib/active_record/coders/yaml_column.rb +2 -0
- data/lib/active_record/collection_cache_key.rb +10 -5
- data/lib/active_record/connection_adapters/abstract/connection_pool.rb +110 -35
- data/lib/active_record/connection_adapters/abstract/database_limits.rb +2 -0
- data/lib/active_record/connection_adapters/abstract/database_statements.rb +120 -28
- data/lib/active_record/connection_adapters/abstract/query_cache.rb +7 -2
- data/lib/active_record/connection_adapters/abstract/quoting.rb +14 -33
- data/lib/active_record/connection_adapters/abstract/savepoints.rb +2 -0
- data/lib/active_record/connection_adapters/abstract/schema_creation.rb +13 -5
- data/lib/active_record/connection_adapters/abstract/schema_definitions.rb +40 -2
- data/lib/active_record/connection_adapters/abstract/schema_dumper.rb +31 -53
- data/lib/active_record/connection_adapters/abstract/schema_statements.rb +103 -63
- data/lib/active_record/connection_adapters/abstract/transaction.rb +45 -9
- data/lib/active_record/connection_adapters/abstract_adapter.rb +62 -90
- data/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +75 -138
- data/lib/active_record/connection_adapters/column.rb +3 -1
- data/lib/active_record/connection_adapters/connection_specification.rb +17 -3
- data/lib/active_record/connection_adapters/determine_if_preparable_visitor.rb +2 -0
- data/lib/active_record/connection_adapters/mysql/column.rb +2 -0
- data/lib/active_record/connection_adapters/mysql/database_statements.rb +3 -1
- data/lib/active_record/connection_adapters/mysql/explain_pretty_printer.rb +2 -0
- data/lib/active_record/connection_adapters/mysql/quoting.rb +9 -10
- data/lib/active_record/connection_adapters/mysql/schema_creation.rb +5 -3
- data/lib/active_record/connection_adapters/mysql/schema_definitions.rb +7 -6
- data/lib/active_record/connection_adapters/mysql/schema_dumper.rb +30 -30
- data/lib/active_record/connection_adapters/mysql/schema_statements.rb +91 -1
- data/lib/active_record/connection_adapters/mysql/type_metadata.rb +2 -0
- data/lib/active_record/connection_adapters/mysql2_adapter.rb +8 -2
- data/lib/active_record/connection_adapters/postgresql/column.rb +2 -0
- data/lib/active_record/connection_adapters/postgresql/database_statements.rb +6 -0
- data/lib/active_record/connection_adapters/postgresql/explain_pretty_printer.rb +2 -0
- data/lib/active_record/connection_adapters/postgresql/oid.rb +2 -1
- data/lib/active_record/connection_adapters/postgresql/oid/array.rb +3 -11
- data/lib/active_record/connection_adapters/postgresql/oid/bit.rb +2 -0
- data/lib/active_record/connection_adapters/postgresql/oid/bit_varying.rb +2 -0
- data/lib/active_record/connection_adapters/postgresql/oid/bytea.rb +2 -0
- data/lib/active_record/connection_adapters/postgresql/oid/cidr.rb +2 -0
- data/lib/active_record/connection_adapters/postgresql/oid/date_time.rb +2 -0
- data/lib/active_record/connection_adapters/postgresql/oid/decimal.rb +3 -1
- data/lib/active_record/connection_adapters/postgresql/oid/enum.rb +2 -0
- data/lib/active_record/connection_adapters/postgresql/oid/hstore.rb +2 -0
- data/lib/active_record/connection_adapters/postgresql/oid/inet.rb +2 -0
- data/lib/active_record/connection_adapters/postgresql/oid/jsonb.rb +3 -1
- data/lib/active_record/connection_adapters/postgresql/oid/legacy_point.rb +2 -0
- data/lib/active_record/connection_adapters/postgresql/oid/money.rb +3 -1
- data/lib/active_record/connection_adapters/postgresql/oid/oid.rb +2 -0
- data/lib/active_record/connection_adapters/postgresql/oid/point.rb +2 -0
- data/lib/active_record/connection_adapters/postgresql/oid/range.rb +3 -5
- data/lib/active_record/connection_adapters/postgresql/oid/specialized_string.rb +2 -0
- data/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb +4 -2
- data/lib/active_record/connection_adapters/postgresql/oid/uuid.rb +3 -1
- data/lib/active_record/connection_adapters/postgresql/oid/vector.rb +2 -0
- data/lib/active_record/connection_adapters/postgresql/oid/xml.rb +2 -0
- data/lib/active_record/connection_adapters/postgresql/quoting.rb +10 -0
- data/lib/active_record/connection_adapters/postgresql/referential_integrity.rb +19 -25
- data/lib/active_record/connection_adapters/postgresql/schema_creation.rb +2 -0
- data/lib/active_record/connection_adapters/postgresql/schema_definitions.rb +11 -7
- data/lib/active_record/connection_adapters/postgresql/schema_dumper.rb +20 -13
- data/lib/active_record/connection_adapters/postgresql/schema_statements.rb +79 -65
- data/lib/active_record/connection_adapters/postgresql/type_metadata.rb +2 -0
- data/lib/active_record/connection_adapters/postgresql/utils.rb +2 -0
- data/lib/active_record/connection_adapters/postgresql_adapter.rb +47 -82
- data/lib/active_record/connection_adapters/schema_cache.rb +2 -0
- data/lib/active_record/connection_adapters/sql_type_metadata.rb +2 -0
- data/lib/active_record/connection_adapters/sqlite3/explain_pretty_printer.rb +2 -0
- data/lib/active_record/connection_adapters/sqlite3/quoting.rb +19 -2
- data/lib/active_record/connection_adapters/sqlite3/schema_creation.rb +2 -0
- data/lib/active_record/connection_adapters/sqlite3/schema_definitions.rb +6 -15
- data/lib/active_record/connection_adapters/sqlite3/schema_dumper.rb +3 -2
- data/lib/active_record/connection_adapters/sqlite3/schema_statements.rb +71 -1
- data/lib/active_record/connection_adapters/sqlite3_adapter.rb +34 -89
- data/lib/active_record/connection_adapters/statement_pool.rb +2 -0
- data/lib/active_record/connection_handling.rb +4 -2
- data/lib/active_record/core.rb +27 -57
- data/lib/active_record/counter_cache.rb +15 -12
- data/lib/active_record/define_callbacks.rb +5 -3
- data/lib/active_record/dynamic_matchers.rb +9 -9
- data/lib/active_record/enum.rb +15 -13
- data/lib/active_record/errors.rb +54 -21
- data/lib/active_record/explain.rb +3 -1
- data/lib/active_record/explain_registry.rb +2 -0
- data/lib/active_record/explain_subscriber.rb +2 -0
- data/lib/active_record/fixture_set/file.rb +2 -0
- data/lib/active_record/fixtures.rb +40 -24
- data/lib/active_record/gem_version.rb +5 -3
- data/lib/active_record/inheritance.rb +6 -5
- data/lib/active_record/integration.rb +58 -19
- data/lib/active_record/internal_metadata.rb +2 -0
- data/lib/active_record/legacy_yaml_adapter.rb +3 -1
- data/lib/active_record/locking/optimistic.rb +31 -20
- data/lib/active_record/locking/pessimistic.rb +10 -7
- data/lib/active_record/log_subscriber.rb +2 -0
- data/lib/active_record/migration.rb +47 -21
- data/lib/active_record/migration/command_recorder.rb +11 -9
- data/lib/active_record/migration/compatibility.rb +20 -2
- data/lib/active_record/migration/join_table.rb +2 -0
- data/lib/active_record/model_schema.rb +29 -38
- data/lib/active_record/nested_attributes.rb +18 -6
- data/lib/active_record/no_touching.rb +3 -1
- data/lib/active_record/null_relation.rb +2 -0
- data/lib/active_record/persistence.rb +184 -40
- data/lib/active_record/query_cache.rb +17 -12
- data/lib/active_record/querying.rb +3 -1
- data/lib/active_record/railtie.rb +54 -1
- data/lib/active_record/railties/console_sandbox.rb +2 -0
- data/lib/active_record/railties/controller_runtime.rb +2 -0
- data/lib/active_record/railties/databases.rake +41 -28
- data/lib/active_record/readonly_attributes.rb +3 -2
- data/lib/active_record/reflection.rb +100 -182
- data/lib/active_record/relation.rb +61 -193
- data/lib/active_record/relation/batches.rb +20 -5
- data/lib/active_record/relation/batches/batch_enumerator.rb +2 -0
- data/lib/active_record/relation/calculations.rb +40 -23
- data/lib/active_record/relation/delegation.rb +10 -27
- data/lib/active_record/relation/finder_methods.rb +53 -49
- data/lib/active_record/relation/from_clause.rb +2 -8
- data/lib/active_record/relation/merger.rb +22 -19
- data/lib/active_record/relation/predicate_builder.rb +42 -79
- data/lib/active_record/relation/predicate_builder/array_handler.rb +10 -7
- data/lib/active_record/relation/predicate_builder/association_query_value.rb +46 -0
- data/lib/active_record/relation/predicate_builder/base_handler.rb +2 -2
- data/lib/active_record/relation/predicate_builder/basic_object_handler.rb +12 -1
- data/lib/active_record/relation/predicate_builder/polymorphic_array_value.rb +54 -0
- data/lib/active_record/relation/predicate_builder/range_handler.rb +22 -6
- data/lib/active_record/relation/predicate_builder/relation_handler.rb +6 -0
- data/lib/active_record/relation/query_attribute.rb +9 -2
- data/lib/active_record/relation/query_methods.rb +80 -69
- data/lib/active_record/relation/record_fetch_warning.rb +2 -0
- data/lib/active_record/relation/spawn_methods.rb +2 -0
- data/lib/active_record/relation/where_clause.rb +50 -67
- data/lib/active_record/relation/where_clause_factory.rb +4 -46
- data/lib/active_record/result.rb +2 -0
- data/lib/active_record/runtime_registry.rb +2 -0
- data/lib/active_record/sanitization.rb +15 -9
- data/lib/active_record/schema.rb +3 -1
- data/lib/active_record/schema_dumper.rb +24 -23
- data/lib/active_record/schema_migration.rb +2 -0
- data/lib/active_record/scoping.rb +9 -8
- data/lib/active_record/scoping/default.rb +6 -7
- data/lib/active_record/scoping/named.rb +15 -7
- data/lib/active_record/secure_token.rb +2 -0
- data/lib/active_record/serialization.rb +2 -0
- data/lib/active_record/statement_cache.rb +22 -12
- data/lib/active_record/store.rb +2 -0
- data/lib/active_record/suppressor.rb +2 -0
- data/lib/active_record/table_metadata.rb +3 -1
- data/lib/active_record/tasks/database_tasks.rb +23 -12
- data/lib/active_record/tasks/mysql_database_tasks.rb +9 -48
- data/lib/active_record/tasks/postgresql_database_tasks.rb +10 -2
- data/lib/active_record/tasks/sqlite_database_tasks.rb +25 -3
- data/lib/active_record/timestamp.rb +5 -12
- data/lib/active_record/touch_later.rb +2 -0
- data/lib/active_record/transactions.rb +9 -7
- data/lib/active_record/translation.rb +2 -0
- data/lib/active_record/type.rb +4 -1
- data/lib/active_record/type/adapter_specific_registry.rb +2 -0
- data/lib/active_record/type/date.rb +2 -0
- data/lib/active_record/type/date_time.rb +2 -0
- data/lib/active_record/type/decimal_without_scale.rb +2 -0
- data/lib/active_record/type/hash_lookup_type_map.rb +2 -0
- data/lib/active_record/type/internal/timezone.rb +2 -0
- data/lib/active_record/type/json.rb +30 -0
- data/lib/active_record/type/serialized.rb +2 -4
- data/lib/active_record/type/text.rb +2 -0
- data/lib/active_record/type/time.rb +2 -0
- data/lib/active_record/type/type_map.rb +2 -0
- data/lib/active_record/type/unsigned_integer.rb +2 -0
- data/lib/active_record/type_caster.rb +2 -0
- data/lib/active_record/type_caster/connection.rb +2 -0
- data/lib/active_record/type_caster/map.rb +2 -0
- data/lib/active_record/validations.rb +2 -0
- data/lib/active_record/validations/absence.rb +2 -0
- data/lib/active_record/validations/associated.rb +2 -0
- data/lib/active_record/validations/length.rb +2 -0
- data/lib/active_record/validations/presence.rb +2 -0
- data/lib/active_record/validations/uniqueness.rb +36 -6
- data/lib/active_record/version.rb +2 -0
- data/lib/rails/generators/active_record.rb +3 -1
- data/lib/rails/generators/active_record/application_record/application_record_generator.rb +27 -0
- data/lib/rails/generators/active_record/{model/templates/application_record.rb → application_record/templates/application_record.rb.tt} +0 -0
- data/lib/rails/generators/active_record/migration.rb +2 -0
- data/lib/rails/generators/active_record/migration/migration_generator.rb +3 -1
- data/lib/rails/generators/active_record/migration/templates/{create_table_migration.rb → create_table_migration.rb.tt} +0 -0
- data/lib/rails/generators/active_record/migration/templates/{migration.rb → migration.rb.tt} +0 -0
- data/lib/rails/generators/active_record/model/model_generator.rb +2 -23
- data/lib/rails/generators/active_record/model/templates/{model.rb → model.rb.tt} +0 -0
- data/lib/rails/generators/active_record/model/templates/{module.rb → module.rb.tt} +0 -0
- metadata +25 -38
- data/lib/active_record/associations/preloader/belongs_to.rb +0 -15
- data/lib/active_record/associations/preloader/collection_association.rb +0 -17
- data/lib/active_record/associations/preloader/has_many.rb +0 -15
- data/lib/active_record/associations/preloader/has_many_through.rb +0 -19
- data/lib/active_record/associations/preloader/has_one.rb +0 -15
- data/lib/active_record/associations/preloader/has_one_through.rb +0 -9
- data/lib/active_record/associations/preloader/singular_association.rb +0 -18
- data/lib/active_record/attribute.rb +0 -240
- data/lib/active_record/attribute/user_provided_default.rb +0 -30
- data/lib/active_record/attribute_mutation_tracker.rb +0 -122
- data/lib/active_record/attribute_set.rb +0 -113
- data/lib/active_record/attribute_set/builder.rb +0 -126
- data/lib/active_record/attribute_set/yaml_encoder.rb +0 -41
- data/lib/active_record/connection_adapters/postgresql/oid/json.rb +0 -10
- data/lib/active_record/railties/jdbcmysql_error.rb +0 -16
- data/lib/active_record/relation/predicate_builder/association_query_handler.rb +0 -88
- data/lib/active_record/relation/predicate_builder/polymorphic_array_handler.rb +0 -59
- data/lib/active_record/type/internal/abstract_json.rb +0 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 22e4facf2e4a7bd6eccc5391172793dca1bb3f20
|
4
|
+
data.tar.gz: 210b454b0fec7a44ce0151d2dba267d67717606c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cdd715e815eeaaed9d749e60f073acdcb56e04ce607f09c8f9540e0fa84ef3d565d7ebb852e73e96c7aa27ab5d3bbca023619786e88a147be7e029279a09fe5b
|
7
|
+
data.tar.gz: 820e3a53b3e00b51ef2f141f6db8d952ab02348890507a80791aeeb70e0c440c38ff1d608ca1289dbec9d56a2b8d0bb3d5534f9a110d0c8b27b631d140c338ad
|
data/CHANGELOG.md
CHANGED
@@ -1,190 +1,122 @@
|
|
1
|
-
## Rails 5.
|
1
|
+
## Rails 5.2.0.beta1 (November 27, 2017) ##
|
2
2
|
|
3
|
-
*
|
3
|
+
* Add new error class `QueryCanceled` which will be raised
|
4
|
+
when canceling statement due to user request.
|
4
5
|
|
5
6
|
*Ryuta Kamizono*
|
6
7
|
|
7
|
-
*
|
8
|
+
* Add `#up_only` to database migrations for code that is only relevant when
|
9
|
+
migrating up, e.g. populating a new column.
|
8
10
|
|
9
|
-
*
|
11
|
+
*Rich Daley*
|
10
12
|
|
11
|
-
*
|
12
|
-
|
13
|
-
Fixes #32867.
|
14
|
-
|
15
|
-
*Ryuta Kamizono*
|
16
|
-
|
17
|
-
|
18
|
-
## Rails 5.1.6.2 (March 11, 2019) ##
|
19
|
-
|
20
|
-
* No changes.
|
21
|
-
|
22
|
-
|
23
|
-
## Rails 5.1.6.1 (November 27, 2018) ##
|
24
|
-
|
25
|
-
* No changes.
|
13
|
+
* Require raw SQL fragments to be explicitly marked when used in
|
14
|
+
relation query methods.
|
26
15
|
|
16
|
+
Before:
|
17
|
+
```
|
18
|
+
Article.order("LENGTH(title)")
|
19
|
+
```
|
27
20
|
|
28
|
-
|
21
|
+
After:
|
22
|
+
```
|
23
|
+
Article.order(Arel.sql("LENGTH(title)"))
|
24
|
+
```
|
29
25
|
|
30
|
-
|
26
|
+
This prevents SQL injection if applications use the [strongly
|
27
|
+
discouraged] form `Article.order(params[:my_order])`, under the
|
28
|
+
mistaken belief that only column names will be accepted.
|
31
29
|
|
32
|
-
|
30
|
+
Raw SQL strings will now cause a deprecation warning, which will
|
31
|
+
become an UnknownAttributeReference error in Rails 6.0. Applications
|
32
|
+
can opt in to the future behavior by setting `allow_unsafe_raw_sql`
|
33
|
+
to `:disabled`.
|
33
34
|
|
34
|
-
|
35
|
+
Common and judged-safe string values (such as simple column
|
36
|
+
references) are unaffected:
|
37
|
+
```
|
38
|
+
Article.order("title DESC")
|
39
|
+
```
|
35
40
|
|
36
|
-
|
37
|
-
have a specified precision then on assignment the value is rounded to
|
38
|
-
that precision. This behavior is now applied to time columns as well.
|
41
|
+
*Ben Toews*
|
39
42
|
|
40
|
-
|
43
|
+
* `update_all` will now pass its values to `Type#cast` before passing them to
|
44
|
+
`Type#serialize`. This means that `update_all(foo: 'true')` will properly
|
45
|
+
persist a boolean.
|
41
46
|
|
42
|
-
*
|
47
|
+
*Sean Griffin*
|
43
48
|
|
44
|
-
*
|
49
|
+
* Add new error class `StatementTimeout` which will be raised
|
50
|
+
when statement timeout exceeded.
|
45
51
|
|
46
|
-
|
47
|
-
because until #24542 the quoting for time columns didn't remove the date
|
48
|
-
component. To ensure that values are consistent we now normalize the
|
49
|
-
date component to 2001-01-01 on reading and writing.
|
52
|
+
*Ryuta Kamizono*
|
50
53
|
|
51
|
-
|
54
|
+
* Fix `bin/rails db:migrate` with specified `VERSION`.
|
55
|
+
`bin/rails db:migrate` with empty VERSION behaves as without `VERSION`.
|
56
|
+
Check a format of `VERSION`: Allow a migration version number
|
57
|
+
or name of a migration file. Raise error if format of `VERSION` is invalid.
|
58
|
+
Raise error if target migration doesn't exist.
|
52
59
|
|
53
|
-
*
|
60
|
+
*bogdanvlviv*
|
54
61
|
|
55
|
-
|
56
|
-
|
57
|
-
date component is removed irrespective of what the date is.
|
62
|
+
* Fixed a bug where column orders for an index weren't written to
|
63
|
+
db/schema.rb when using the sqlite adapter.
|
58
64
|
|
59
|
-
|
65
|
+
Fixes #30902.
|
60
66
|
|
61
|
-
*
|
67
|
+
*Paul Kuruvilla*
|
62
68
|
|
63
|
-
|
69
|
+
* Remove deprecated method `#sanitize_conditions`.
|
64
70
|
|
65
|
-
*
|
66
|
-
`locking_column`, without default value, is null in the database.
|
71
|
+
*Rafael Mendonça França*
|
67
72
|
|
68
|
-
|
73
|
+
* Remove deprecated method `#scope_chain`.
|
69
74
|
|
70
|
-
*
|
71
|
-
`locking column` is null in the database.
|
75
|
+
*Rafael Mendonça França*
|
72
76
|
|
73
|
-
|
77
|
+
* Remove deprecated configuration `.error_on_ignored_order_or_limit`.
|
74
78
|
|
79
|
+
*Rafael Mendonça França*
|
75
80
|
|
76
|
-
|
81
|
+
* Remove deprecated arguments from `#verify!`.
|
77
82
|
|
78
|
-
*
|
83
|
+
*Rafael Mendonça França*
|
79
84
|
|
80
|
-
|
85
|
+
* Remove deprecated argument `name` from `#indexes`.
|
81
86
|
|
82
|
-
*
|
87
|
+
*Rafael Mendonça França*
|
83
88
|
|
84
|
-
|
89
|
+
* Remove deprecated method `ActiveRecord::Migrator.schema_migrations_table_name`.
|
85
90
|
|
86
|
-
*
|
91
|
+
*Rafael Mendonça França*
|
87
92
|
|
88
|
-
*
|
89
|
-
SQL queries for association counting.
|
93
|
+
* Remove deprecated method `supports_primary_key?`.
|
90
94
|
|
91
|
-
*
|
95
|
+
*Rafael Mendonça França*
|
92
96
|
|
93
|
-
*
|
97
|
+
* Remove deprecated method `supports_migrations?`.
|
94
98
|
|
95
|
-
*
|
99
|
+
*Rafael Mendonça França*
|
96
100
|
|
97
|
-
*
|
101
|
+
* Remove deprecated methods `initialize_schema_migrations_table` and `initialize_internal_metadata_table`.
|
98
102
|
|
99
|
-
*
|
103
|
+
*Rafael Mendonça França*
|
100
104
|
|
101
|
-
*
|
105
|
+
* Raises when calling `lock!` in a dirty record.
|
102
106
|
|
103
|
-
|
104
|
-
# create_table :posts do |t|
|
105
|
-
# t.integer :comments_count, default: 0
|
106
|
-
# t.integer :lock_version
|
107
|
-
# t.timestamps
|
108
|
-
# end
|
109
|
-
class Post < ApplicationRecord
|
110
|
-
end
|
111
|
-
|
112
|
-
# create_table :comments do |t|
|
113
|
-
# t.belongs_to :post
|
114
|
-
# end
|
115
|
-
class Comment < ApplicationRecord
|
116
|
-
belongs_to :post, touch: true, counter_cache: true
|
117
|
-
end
|
118
|
-
```
|
107
|
+
*Rafael Mendonça França*
|
119
108
|
|
120
|
-
|
121
|
-
```
|
122
|
-
post = Post.create!
|
123
|
-
# => begin transaction
|
124
|
-
INSERT INTO "posts" ("created_at", "updated_at", "lock_version")
|
125
|
-
VALUES ("2017-12-11 21:27:11.387397", "2017-12-11 21:27:11.387397", 0)
|
126
|
-
commit transaction
|
127
|
-
|
128
|
-
comment = Comment.create!(post: post)
|
129
|
-
# => begin transaction
|
130
|
-
INSERT INTO "comments" ("post_id") VALUES (1)
|
131
|
-
|
132
|
-
UPDATE "posts" SET "comments_count" = COALESCE("comments_count", 0) + 1,
|
133
|
-
"lock_version" = COALESCE("lock_version", 0) + 1 WHERE "posts"."id" = 1
|
134
|
-
|
135
|
-
UPDATE "posts" SET "updated_at" = '2017-12-11 21:27:11.398330',
|
136
|
-
"lock_version" = 1 WHERE "posts"."id" = 1 AND "posts"."lock_version" = 0
|
137
|
-
rollback transaction
|
138
|
-
# => ActiveRecord::StaleObjectError: Attempted to touch a stale object: Post.
|
139
|
-
|
140
|
-
Comment.take.destroy!
|
141
|
-
# => begin transaction
|
142
|
-
DELETE FROM "comments" WHERE "comments"."id" = 1
|
143
|
-
|
144
|
-
UPDATE "posts" SET "comments_count" = COALESCE("comments_count", 0) - 1,
|
145
|
-
"lock_version" = COALESCE("lock_version", 0) + 1 WHERE "posts"."id" = 1
|
146
|
-
|
147
|
-
UPDATE "posts" SET "updated_at" = '2017-12-11 21:42:47.785901',
|
148
|
-
"lock_version" = 1 WHERE "posts"."id" = 1 AND "posts"."lock_version" = 0
|
149
|
-
rollback transaction
|
150
|
-
# => ActiveRecord::StaleObjectError: Attempted to touch a stale object: Post.
|
151
|
-
```
|
109
|
+
* Remove deprecated support to passing a class to `:class_name` on associations.
|
152
110
|
|
153
|
-
|
154
|
-
```
|
155
|
-
post = Post.create!
|
156
|
-
# => begin transaction
|
157
|
-
INSERT INTO "posts" ("created_at", "updated_at", "lock_version")
|
158
|
-
VALUES ("2017-12-11 21:27:11.387397", "2017-12-11 21:27:11.387397", 0)
|
159
|
-
commit transaction
|
160
|
-
|
161
|
-
comment = Comment.create!(post: post)
|
162
|
-
# => begin transaction
|
163
|
-
INSERT INTO "comments" ("post_id") VALUES (1)
|
164
|
-
|
165
|
-
UPDATE "posts" SET "comments_count" = COALESCE("comments_count", 0) + 1,
|
166
|
-
"lock_version" = COALESCE("lock_version", 0) + 1,
|
167
|
-
"updated_at" = '2017-12-11 21:37:09.802642' WHERE "posts"."id" = 1
|
168
|
-
commit transaction
|
169
|
-
|
170
|
-
comment.destroy!
|
171
|
-
# => begin transaction
|
172
|
-
DELETE FROM "comments" WHERE "comments"."id" = 1
|
173
|
-
|
174
|
-
UPDATE "posts" SET "comments_count" = COALESCE("comments_count", 0) - 1,
|
175
|
-
"lock_version" = COALESCE("lock_version", 0) + 1,
|
176
|
-
"updated_at" = '2017-12-11 21:39:02.685520' WHERE "posts"."id" = 1
|
177
|
-
commit transaction
|
178
|
-
```
|
111
|
+
*Rafael Mendonça França*
|
179
112
|
|
180
|
-
|
113
|
+
* Remove deprecated argument `default` from `index_name_exists?`.
|
181
114
|
|
182
|
-
*
|
115
|
+
*Rafael Mendonça França*
|
183
116
|
|
184
|
-
*
|
185
|
-
without being connected.
|
117
|
+
* Remove deprecated support to `quoted_id` when typecasting an Active Record object.
|
186
118
|
|
187
|
-
*
|
119
|
+
*Rafael Mendonça França*
|
188
120
|
|
189
121
|
* Fix `bin/rails db:setup` and `bin/rails db:test:prepare` create wrong
|
190
122
|
ar_internal_metadata's data for a test database.
|
@@ -227,890 +159,279 @@
|
|
227
159
|
|
228
160
|
*Ryuta Kamizono*
|
229
161
|
|
162
|
+
* PostgreSQL `tsrange` now preserves subsecond precision.
|
230
163
|
|
231
|
-
|
232
|
-
|
233
|
-
|
164
|
+
PostgreSQL 9.1+ introduced range types, and Rails added support for using
|
165
|
+
this datatype in Active Record. However, the serialization of
|
166
|
+
`PostgreSQL::OID::Range` was incomplete, because it did not properly
|
167
|
+
cast the bounds that make up the range. This led to subseconds being
|
168
|
+
dropped in SQL commands:
|
234
169
|
|
170
|
+
Before:
|
235
171
|
|
236
|
-
|
237
|
-
|
238
|
-
* Ensure `sum` honors `distinct` on `has_many :through` associations
|
239
|
-
|
240
|
-
Fixes #16791
|
241
|
-
|
242
|
-
*Aaron Wortham
|
243
|
-
|
244
|
-
* Fix `COUNT(DISTINCT ...)` with `ORDER BY` and `LIMIT` to keep the existing select list.
|
245
|
-
|
246
|
-
*Ryuta Kamizono*
|
247
|
-
|
248
|
-
* Fix `unscoped(where: [columns])` removing the wrong bind values
|
249
|
-
|
250
|
-
When the `where` is called on a relation after a `or`, unscoping the column of that later `where`, it removed
|
251
|
-
bind values used by the `or` instead.
|
252
|
-
|
253
|
-
```
|
254
|
-
Post.where(id: 1).or(Post.where(id: 2)).where(foo: 3).unscope(where: :foo).to_sql
|
255
|
-
# Currently:
|
256
|
-
# SELECT "posts".* FROM "posts" WHERE ("posts"."id" = 2 OR "posts"."id" = 3)
|
257
|
-
# With fix:
|
258
|
-
# SELECT "posts".* FROM "posts" WHERE ("posts"."id" = 1 OR "posts"."id" = 2)
|
259
|
-
```
|
260
|
-
|
261
|
-
*Maxime Handfield Lapointe*
|
262
|
-
|
263
|
-
* When a `has_one` association is destroyed by `dependent: destroy`,
|
264
|
-
`destroyed_by_association` will now be set to the reflection, matching the
|
265
|
-
behaviour of `has_many` associations.
|
266
|
-
|
267
|
-
*Lisa Ugray*
|
268
|
-
|
269
|
-
|
270
|
-
## Rails 5.1.3 (August 03, 2017) ##
|
271
|
-
|
272
|
-
* No changes.
|
273
|
-
|
274
|
-
|
275
|
-
## Rails 5.1.3.rc3 (July 31, 2017) ##
|
276
|
-
|
277
|
-
* No changes.
|
278
|
-
|
279
|
-
|
280
|
-
## Rails 5.1.3.rc2 (July 25, 2017) ##
|
281
|
-
|
282
|
-
* No changes.
|
172
|
+
connection.type_cast(tsrange.serialize(range_value))
|
173
|
+
# => "[2010-01-01 13:30:00 UTC,2011-02-02 19:30:00 UTC)"
|
283
174
|
|
175
|
+
Now:
|
284
176
|
|
285
|
-
|
177
|
+
connection.type_cast(tsrange.serialize(range_value))
|
178
|
+
# => "[2010-01-01 13:30:00.670277,2011-02-02 19:30:00.745125)"
|
286
179
|
|
287
|
-
*
|
288
|
-
`current_scope`, with the exception of `unscoped`.
|
180
|
+
*Thomas Cannon*
|
289
181
|
|
290
|
-
|
182
|
+
* Passing a `Set` to `Relation#where` now behaves the same as passing an
|
183
|
+
array.
|
291
184
|
|
292
185
|
*Sean Griffin*
|
293
186
|
|
294
|
-
*
|
295
|
-
if the child records were deleted before the parent was saved, they would
|
296
|
-
still be persisted. Now, if child records are deleted before the parent is saved
|
297
|
-
on a `has_many :through` association, the child records will not be persisted.
|
298
|
-
|
299
|
-
*Tobias Kraze*
|
300
|
-
|
301
|
-
|
302
|
-
## Rails 5.1.2 (June 26, 2017) ##
|
303
|
-
|
304
|
-
* Restore previous behavior of collection proxies: their values can have
|
305
|
-
methods stubbed, and they respect extension modules applied by a default
|
306
|
-
scope.
|
307
|
-
|
308
|
-
*Ryuta Kamizono*
|
309
|
-
|
310
|
-
* Loading model schema from database is now thread-safe.
|
311
|
-
|
312
|
-
Fixes #28589.
|
313
|
-
|
314
|
-
*Vikrant Chaudhary*, *David Abdemoulaie*
|
315
|
-
|
316
|
-
|
317
|
-
## Rails 5.1.1 (May 12, 2017) ##
|
187
|
+
* Use given algorithm while removing index from database.
|
318
188
|
|
319
|
-
|
320
|
-
|
321
|
-
Fixes #28959.
|
322
|
-
|
323
|
-
*Jon Moss*
|
324
|
-
|
325
|
-
|
326
|
-
## Rails 5.1.0 (April 27, 2017) ##
|
327
|
-
|
328
|
-
* Quote database name in db:create grant statement (when database_user does not have access to create the database).
|
329
|
-
|
330
|
-
*Rune Philosof*
|
331
|
-
|
332
|
-
* When multiple threads are sharing a database connection inside a test using
|
333
|
-
transactional fixtures, a nested transaction will temporarily lock the
|
334
|
-
connection to the current thread, forcing others to wait.
|
335
|
-
|
336
|
-
Fixes #28197.
|
337
|
-
|
338
|
-
*Matthew Draper*
|
339
|
-
|
340
|
-
* Load only needed records on `ActiveRecord::Relation#inspect`.
|
341
|
-
|
342
|
-
Instead of loading all records and returning only a subset of those, just
|
343
|
-
load the records as needed.
|
344
|
-
|
345
|
-
Fixes #25537.
|
346
|
-
|
347
|
-
*Hendy Tanata*
|
348
|
-
|
349
|
-
* Remove comments from structure.sql when using postgresql adapter to avoid
|
350
|
-
version-specific parts of the file.
|
351
|
-
|
352
|
-
Fixes #28153.
|
353
|
-
|
354
|
-
*Ari Pollak*
|
355
|
-
|
356
|
-
* Add `:default` option to `belongs_to`.
|
357
|
-
|
358
|
-
Use it to specify that an association should be initialized with a particular
|
359
|
-
record before validation. For example:
|
360
|
-
|
361
|
-
# Before
|
362
|
-
belongs_to :account
|
363
|
-
before_validation -> { self.account ||= Current.account }
|
364
|
-
|
365
|
-
# After
|
366
|
-
belongs_to :account, default: -> { Current.account }
|
367
|
-
|
368
|
-
*George Claghorn*
|
369
|
-
|
370
|
-
* Deprecate `Migrator.schema_migrations_table_name`.
|
371
|
-
|
372
|
-
*Ryuta Kamizono*
|
373
|
-
|
374
|
-
* Fix select with block doesn't return newly built records in has_many association.
|
375
|
-
|
376
|
-
Fixes #28348.
|
189
|
+
Fixes #24190.
|
377
190
|
|
378
|
-
*
|
191
|
+
*Mehmet Emin İNAÇ*
|
379
192
|
|
380
|
-
*
|
193
|
+
* Update payload names for `sql.active_record` instrumentation to be
|
194
|
+
more descriptive.
|
381
195
|
|
382
|
-
|
383
|
-
path defined in `Rails.application.config.paths` however the code checked
|
384
|
-
for the presence of the `Rails` constant but not the `Rails.application`
|
385
|
-
method which caused problems when using Active Record and generators outside
|
386
|
-
of the context of a Rails application.
|
196
|
+
Fixes #30586.
|
387
197
|
|
388
|
-
|
198
|
+
*Jeremy Green*
|
389
199
|
|
390
|
-
|
200
|
+
* Add new error class `LockWaitTimeout` which will be raised
|
201
|
+
when lock wait timeout exceeded.
|
391
202
|
|
392
|
-
*
|
203
|
+
*Gabriel Courtemanche*
|
393
204
|
|
394
|
-
|
205
|
+
* Remove deprecated `#migration_keys`.
|
395
206
|
|
396
207
|
*Ryuta Kamizono*
|
397
208
|
|
398
|
-
*
|
399
|
-
|
400
|
-
*Ryuta Kamizono*
|
209
|
+
* Automatically guess the inverse associations for STI.
|
401
210
|
|
402
|
-
*
|
211
|
+
*Yuichiro Kaneko*
|
403
212
|
|
404
|
-
|
405
|
-
|
406
|
-
* Don't share options between reference id and type columns
|
213
|
+
* Ensure `sum` honors `distinct` on `has_many :through` associations
|
407
214
|
|
408
|
-
|
409
|
-
between the two columns doesn't make sense since they are different types.
|
410
|
-
The `reference_id` column is usually an integer and the `reference_type`
|
411
|
-
column a string so options like `unsigned: true` will result in an invalid
|
412
|
-
table definition.
|
215
|
+
Fixes #16791.
|
413
216
|
|
414
|
-
*
|
217
|
+
*Aaron Wortham*
|
415
218
|
|
416
|
-
*
|
219
|
+
* Add `binary` fixture helper method.
|
417
220
|
|
418
|
-
*
|
221
|
+
*Atsushi Yoshida*
|
419
222
|
|
420
|
-
*
|
223
|
+
* When using `Relation#or`, extract the common conditions and put them before the OR condition.
|
421
224
|
|
422
|
-
*
|
225
|
+
*Maxime Handfield Lapointe*
|
423
226
|
|
424
|
-
*
|
227
|
+
* `Relation#or` now accepts two relations who have different values for
|
228
|
+
`references` only, as `references` can be implicitly called by `where`.
|
425
229
|
|
426
|
-
|
230
|
+
Fixes #29411.
|
427
231
|
|
428
|
-
*
|
232
|
+
*Sean Griffin*
|
429
233
|
|
430
|
-
|
234
|
+
* `ApplicationRecord` is no longer generated when generating models. If you
|
235
|
+
need to generate it, it can be created with `rails g application_record`.
|
431
236
|
|
432
|
-
*
|
237
|
+
*Lisa Ugray*
|
433
238
|
|
434
|
-
|
239
|
+
* Fix `COUNT(DISTINCT ...)` with `ORDER BY` and `LIMIT` to keep the existing select list.
|
435
240
|
|
436
241
|
*Ryuta Kamizono*
|
437
242
|
|
438
|
-
*
|
439
|
-
|
440
|
-
|
441
|
-
Internal representation of the timestamp type is UNIX time, This means
|
442
|
-
that timestamp columns are affected by time zone.
|
443
|
-
|
444
|
-
> SET time_zone = '+00:00';
|
445
|
-
Query OK, 0 rows affected (0.00 sec)
|
446
|
-
|
447
|
-
> INSERT INTO time_with_zone(ts,dt) VALUES (NOW(),NOW());
|
448
|
-
Query OK, 1 row affected (0.02 sec)
|
449
|
-
|
450
|
-
> SELECT * FROM time_with_zone;
|
451
|
-
+---------------------+---------------------+
|
452
|
-
| ts | dt |
|
453
|
-
+---------------------+---------------------+
|
454
|
-
| 2016-02-07 22:11:44 | 2016-02-07 22:11:44 |
|
455
|
-
+---------------------+---------------------+
|
456
|
-
1 row in set (0.00 sec)
|
457
|
-
|
458
|
-
> SET time_zone = '-08:00';
|
459
|
-
Query OK, 0 rows affected (0.00 sec)
|
460
|
-
|
461
|
-
> SELECT * FROM time_with_zone;
|
462
|
-
+---------------------+---------------------+
|
463
|
-
| ts | dt |
|
464
|
-
+---------------------+---------------------+
|
465
|
-
| 2016-02-07 14:11:44 | 2016-02-07 22:11:44 |
|
466
|
-
+---------------------+---------------------+
|
467
|
-
1 row in set (0.00 sec)
|
468
|
-
|
469
|
-
*Ryuta Kamizono*
|
243
|
+
* When a `has_one` association is destroyed by `dependent: destroy`,
|
244
|
+
`destroyed_by_association` will now be set to the reflection, matching the
|
245
|
+
behaviour of `has_many` associations.
|
470
246
|
|
471
|
-
*
|
247
|
+
*Lisa Ugray*
|
472
248
|
|
473
|
-
|
249
|
+
* Fix `unscoped(where: [columns])` removing the wrong bind values
|
474
250
|
|
475
|
-
|
251
|
+
When the `where` is called on a relation after a `or`, unscoping the column of that later `where` removed
|
252
|
+
bind values used by the `or` instead. (possibly other cases too)
|
476
253
|
|
477
|
-
|
254
|
+
```
|
255
|
+
Post.where(id: 1).or(Post.where(id: 2)).where(foo: 3).unscope(where: :foo).to_sql
|
256
|
+
# Currently:
|
257
|
+
# SELECT "posts".* FROM "posts" WHERE ("posts"."id" = 2 OR "posts"."id" = 3)
|
258
|
+
# With fix:
|
259
|
+
# SELECT "posts".* FROM "posts" WHERE ("posts"."id" = 1 OR "posts"."id" = 2)
|
260
|
+
```
|
478
261
|
|
479
|
-
*
|
262
|
+
*Maxime Handfield Lapointe*
|
480
263
|
|
481
|
-
|
264
|
+
* Values constructed using multi-parameter assignment will now use the
|
265
|
+
post-type-cast value for rendering in single-field form inputs.
|
482
266
|
|
483
|
-
*
|
267
|
+
*Sean Griffin*
|
484
268
|
|
485
|
-
|
269
|
+
* `Relation#joins` is no longer affected by the target model's
|
270
|
+
`current_scope`, with the exception of `unscoped`.
|
486
271
|
|
487
|
-
|
488
|
-
been long unused and unsupported.
|
272
|
+
Fixes #29338.
|
489
273
|
|
490
|
-
*
|
274
|
+
*Sean Griffin*
|
491
275
|
|
492
|
-
*
|
493
|
-
so queries are not run against the previous table name.
|
276
|
+
* Change sqlite3 boolean serialization to use 1 and 0
|
494
277
|
|
495
|
-
|
278
|
+
SQLite natively recognizes 1 and 0 as true and false, but does not natively
|
279
|
+
recognize 't' and 'f' as was previously serialized.
|
496
280
|
|
497
|
-
|
281
|
+
This change in serialization requires a migration of stored boolean data
|
282
|
+
for SQLite databases, so it's implemented behind a configuration flag
|
283
|
+
whose default false value is deprecated.
|
498
284
|
|
499
|
-
*
|
285
|
+
*Lisa Ugray*
|
500
286
|
|
501
|
-
*
|
287
|
+
* Skip query caching when working with batches of records (`find_each`, `find_in_batches`,
|
288
|
+
`in_batches`).
|
502
289
|
|
503
|
-
|
290
|
+
Previously, records would be fetched in batches, but all records would be retained in memory
|
291
|
+
until the end of the request or job.
|
504
292
|
|
505
|
-
*
|
293
|
+
*Eugene Kenny*
|
506
294
|
|
507
|
-
|
295
|
+
* Prevent errors raised by `sql.active_record` notification subscribers from being converted into
|
296
|
+
`ActiveRecord::StatementInvalid` exceptions.
|
508
297
|
|
509
|
-
*
|
298
|
+
*Dennis Taylor*
|
510
299
|
|
511
|
-
|
300
|
+
* Fix eager loading/preloading association with scope including joins.
|
512
301
|
|
513
|
-
|
302
|
+
Fixes #28324.
|
514
303
|
|
515
304
|
*Ryuta Kamizono*
|
516
305
|
|
517
|
-
* Fix
|
518
|
-
|
519
|
-
Fixes #27864.
|
520
|
-
|
521
|
-
*Daniel Colson*
|
522
|
-
|
523
|
-
* Virtual/generated column support for MySQL 5.7.5+ and MariaDB 5.2.0+.
|
524
|
-
|
525
|
-
MySQL generated columns: https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html
|
526
|
-
MariaDB virtual columns: https://mariadb.com/kb/en/mariadb/virtual-computed-columns/
|
527
|
-
|
528
|
-
Declare virtual columns with `t.virtual name, type: …, as: "expression"`.
|
529
|
-
Pass `stored: true` to persist the generated value (false by default).
|
530
|
-
|
531
|
-
Example:
|
532
|
-
|
533
|
-
create_table :generated_columns do |t|
|
534
|
-
t.string :name
|
535
|
-
t.virtual :upper_name, type: :string, as: "UPPER(name)"
|
536
|
-
t.virtual :name_length, type: :integer, as: "LENGTH(name)", stored: true
|
537
|
-
t.index :name_length # May be indexed, too!
|
538
|
-
end
|
306
|
+
* Fix transactions to apply state to child transactions
|
539
307
|
|
540
|
-
|
541
|
-
|
542
|
-
* Deprecate `initialize_schema_migrations_table` and `initialize_internal_metadata_table`.
|
308
|
+
Previously, if you had a nested transaction and the outer transaction was rolledback, the record from the
|
309
|
+
inner transaction would still be marked as persisted.
|
543
310
|
|
544
|
-
|
311
|
+
This change fixes that by applying the state of the parent transaction to the child transaction when the
|
312
|
+
parent transaction is rolledback. This will correctly mark records from the inner transaction as not persisted.
|
545
313
|
|
546
|
-
*
|
314
|
+
*Eileen M. Uchitelle*, *Aaron Patterson*
|
547
315
|
|
548
|
-
|
316
|
+
* Deprecate `set_state` method in `TransactionState`
|
549
317
|
|
550
|
-
|
318
|
+
Deprecated the `set_state` method in favor of setting the state via specific methods. If you need to mark the
|
319
|
+
state of the transaction you can now use `rollback!`, `commit!` or `nullify!` instead of
|
320
|
+
`set_state(:rolledback)`, `set_state(:committed)`, or `set_state(nil)`.
|
551
321
|
|
552
|
-
*
|
322
|
+
*Eileen M. Uchitelle*, *Aaron Patterson*
|
553
323
|
|
554
|
-
*
|
324
|
+
* Deprecate delegating to `arel` in `Relation`.
|
555
325
|
|
556
326
|
*Ryuta Kamizono*
|
557
327
|
|
558
|
-
*
|
559
|
-
|
560
|
-
*Hiroaki Izu*
|
561
|
-
|
562
|
-
* Deprecate passing a class to the `class_name` because it eagerloads more classes than
|
563
|
-
necessary and potentially creates circular dependencies.
|
564
|
-
|
565
|
-
*Kir Shatrov*
|
566
|
-
|
567
|
-
* Raise error when has_many through is defined before through association.
|
568
|
-
|
569
|
-
Fixes #26834.
|
570
|
-
|
571
|
-
*Chris Holmes*
|
572
|
-
|
573
|
-
* Deprecate passing `name` to `indexes`.
|
328
|
+
* Fix eager loading to respect `store_full_sti_class` setting.
|
574
329
|
|
575
330
|
*Ryuta Kamizono*
|
576
331
|
|
577
|
-
*
|
578
|
-
|
579
|
-
*Rafel Mendonça França*
|
580
|
-
|
581
|
-
* Compare deserialized values for `PostgreSQL::OID::Hstore` types when
|
582
|
-
calling `ActiveRecord::Dirty#changed_in_place?`.
|
583
|
-
|
584
|
-
Fixes #27502.
|
585
|
-
|
586
|
-
*Jon Moss*
|
587
|
-
|
588
|
-
* Raise `ArgumentError` when passing an `ActiveRecord::Base` instance to `.find`,
|
589
|
-
`.exists?` and `.update`.
|
590
|
-
|
591
|
-
*Rafael Mendonça França*
|
592
|
-
|
593
|
-
* Respect precision option for arrays of timestamps.
|
594
|
-
|
595
|
-
Fixes #27514.
|
596
|
-
|
597
|
-
*Sean Griffin*
|
598
|
-
|
599
|
-
* Optimize slow model instantiation when using STI and `store_full_sti_class = false` option.
|
600
|
-
|
601
|
-
*Konstantin Lazarev*
|
602
|
-
|
603
|
-
* Add `touch` option to counter cache modifying methods.
|
604
|
-
|
605
|
-
Works when updating, resetting, incrementing and decrementing counters:
|
606
|
-
|
607
|
-
# Touches `updated_at`/`updated_on`.
|
608
|
-
Topic.increment_counter(:messages_count, 1, touch: true)
|
609
|
-
Topic.decrement_counter(:messages_count, 1, touch: true)
|
610
|
-
|
611
|
-
# Touches `last_discussed_at`.
|
612
|
-
Topic.reset_counters(18, :messages, touch: :last_discussed_at)
|
613
|
-
|
614
|
-
# Touches `updated_at` and `last_discussed_at`.
|
615
|
-
Topic.update_counters(18, messages_count: 5, touch: %i( updated_at last_discussed_at ))
|
616
|
-
|
617
|
-
Fixes #26724.
|
618
|
-
|
619
|
-
*Jarred Trost*
|
620
|
-
|
621
|
-
* Remove deprecated `#uniq`, `#uniq!`, and `#uniq_value`.
|
622
|
-
|
623
|
-
*Ryuta Kamizono*
|
624
|
-
|
625
|
-
* Remove deprecated `#insert_sql`, `#update_sql`, and `#delete_sql`.
|
626
|
-
|
627
|
-
*Ryuta Kamizono*
|
628
|
-
|
629
|
-
* Remove deprecated `#use_transactional_fixtures` configuration.
|
630
|
-
|
631
|
-
*Rafael Mendonça França*
|
632
|
-
|
633
|
-
* Remove deprecated `#raise_in_transactional_callbacks` configuration.
|
634
|
-
|
635
|
-
*Rafael Mendonça França*
|
636
|
-
|
637
|
-
* Remove deprecated `#load_schema_for`.
|
638
|
-
|
639
|
-
*Rafael Mendonça França*
|
640
|
-
|
641
|
-
* Remove deprecated conditions parameter from `#destroy_all` and `#delete_all`.
|
642
|
-
|
643
|
-
*Rafael Mendonça França*
|
644
|
-
|
645
|
-
* Remove deprecated support to passing arguments to `#select` when a block is provided.
|
646
|
-
|
647
|
-
*Rafael Mendonça França*
|
648
|
-
|
649
|
-
* Remove deprecated support to query using commas on LIMIT.
|
650
|
-
|
651
|
-
*Rafael Mendonça França*
|
652
|
-
|
653
|
-
* Remove deprecated support to passing a class as a value in a query.
|
654
|
-
|
655
|
-
*Rafael Mendonça França*
|
656
|
-
|
657
|
-
* Raise `ActiveRecord::IrreversibleOrderError` when using `last` with an irreversible
|
658
|
-
order.
|
659
|
-
|
660
|
-
*Rafael Mendonça França*
|
661
|
-
|
662
|
-
* Raise when a `has_many :through` association has an ambiguous reflection name.
|
663
|
-
|
664
|
-
*Rafael Mendonça França*
|
665
|
-
|
666
|
-
* Raise when `ActiveRecord::Migration` is inherited from directly.
|
667
|
-
|
668
|
-
*Rafael Mendonça França*
|
669
|
-
|
670
|
-
* Remove deprecated `original_exception` argument in `ActiveRecord::StatementInvalid#initialize`
|
671
|
-
and `ActiveRecord::StatementInvalid#original_exception`.
|
672
|
-
|
673
|
-
*Rafael Mendonça França*
|
674
|
-
|
675
|
-
* `#tables` and `#table_exists?` return only tables and not views.
|
676
|
-
|
677
|
-
All the deprecations on those methods were removed.
|
678
|
-
|
679
|
-
*Rafael Mendonça França*
|
680
|
-
|
681
|
-
* Remove deprecated `name` argument from `#tables`.
|
682
|
-
|
683
|
-
*Rafael Mendonça França*
|
684
|
-
|
685
|
-
* Remove deprecated support to passing a column to `#quote`.
|
686
|
-
|
687
|
-
*Rafael Mendonça França*
|
688
|
-
|
689
|
-
* Set `:time` as a timezone aware type and remove deprecation when
|
690
|
-
`config.active_record.time_zone_aware_types` is not explicitly set.
|
691
|
-
|
692
|
-
*Rafael Mendonça França*
|
332
|
+
* Query cache was unavailable when entering the `ActiveRecord::Base.cache` block
|
333
|
+
without being connected.
|
693
334
|
|
694
|
-
*
|
335
|
+
*Tsukasa Oishi*
|
695
336
|
|
696
|
-
|
337
|
+
* Previously, when building records using a `has_many :through` association,
|
338
|
+
if the child records were deleted before the parent was saved, they would
|
339
|
+
still be persisted. Now, if child records are deleted before the parent is saved
|
340
|
+
on a `has_many :through` association, the child records will not be persisted.
|
697
341
|
|
698
|
-
*
|
699
|
-
`activerecord.errors.messages.restrict_dependent_destroy.many` i18n scopes.
|
342
|
+
*Tobias Kraze*
|
700
343
|
|
701
|
-
|
344
|
+
* Merging two relations representing nested joins no longer transforms the joins of
|
345
|
+
the merged relation into LEFT OUTER JOIN. Example to clarify:
|
702
346
|
|
703
|
-
|
347
|
+
```
|
348
|
+
Author.joins(:posts).merge(Post.joins(:comments))
|
349
|
+
# Before the change:
|
350
|
+
#=> SELECT ... FROM authors INNER JOIN posts ON ... LEFT OUTER JOIN comments ON...
|
704
351
|
|
705
|
-
|
706
|
-
|
352
|
+
# After the change:
|
353
|
+
#=> SELECT ... FROM authors INNER JOIN posts ON ... INNER JOIN comments ON...
|
354
|
+
```
|
707
355
|
|
708
|
-
|
356
|
+
TODO: Add to the Rails 5.2 upgrade guide
|
709
357
|
|
710
|
-
*
|
358
|
+
*Maxime Handfield Lapointe*
|
711
359
|
|
712
|
-
|
360
|
+
* `ActiveRecord::Persistence#touch` does not work well when optimistic locking enabled and
|
361
|
+
`locking_column`, without default value, is null in the database.
|
713
362
|
|
714
|
-
*
|
363
|
+
*bogdanvlviv*
|
715
364
|
|
716
|
-
*
|
365
|
+
* Fix destroying existing object does not work well when optimistic locking enabled and
|
366
|
+
`locking_column` is null in the database.
|
717
367
|
|
718
|
-
*
|
368
|
+
*bogdanvlviv*
|
719
369
|
|
720
|
-
*
|
370
|
+
* Use bulk INSERT to insert fixtures for better performance.
|
721
371
|
|
722
372
|
*Kir Shatrov*
|
723
373
|
|
724
|
-
*
|
725
|
-
column names.
|
726
|
-
|
727
|
-
Fixes #27243.
|
728
|
-
|
729
|
-
*Ryuta Kamizono*
|
730
|
-
|
731
|
-
* Raise `ActiveRecord::RangeError` when values that executed are out of range.
|
374
|
+
* Prevent creation of bind param if casted value is nil.
|
732
375
|
|
733
376
|
*Ryuta Kamizono*
|
734
377
|
|
735
|
-
*
|
736
|
-
or updated because it would violate a not null constraint.
|
737
|
-
|
738
|
-
*Ryuta Kamizono*
|
739
|
-
|
740
|
-
* Emulate db trigger behaviour for after_commit :destroy, :update.
|
741
|
-
|
742
|
-
Race conditions can occur when an ActiveRecord is destroyed
|
743
|
-
twice or destroyed and updated. The callbacks should only be
|
744
|
-
triggered once, similar to a SQL database trigger.
|
745
|
-
|
746
|
-
*Stefan Budeanu*
|
747
|
-
|
748
|
-
* Moved `DecimalWithoutScale`, `Text`, and `UnsignedInteger` from Active Model to Active Record.
|
749
|
-
|
750
|
-
*Iain Beeston*
|
751
|
-
|
752
|
-
* Fix `write_attribute` method to check whether an attribute is aliased or not, and
|
753
|
-
use the aliased attribute name if needed.
|
754
|
-
|
755
|
-
*Prathamesh Sonpatki*
|
756
|
-
|
757
|
-
* Fix `read_attribute` method to check whether an attribute is aliased or not, and
|
758
|
-
use the aliased attribute name if needed.
|
759
|
-
|
760
|
-
Fixes #26417.
|
761
|
-
|
762
|
-
*Prathamesh Sonpatki*
|
763
|
-
|
764
|
-
* PostgreSQL & MySQL: Use big integer as primary key type for new tables.
|
765
|
-
|
766
|
-
*Jon McCartie*, *Pavel Pravosud*
|
767
|
-
|
768
|
-
* Change the type argument of `ActiveRecord::Base#attribute` to be optional.
|
769
|
-
The default is now `ActiveRecord::Type::Value.new`, which provides no type
|
770
|
-
casting behavior.
|
771
|
-
|
772
|
-
*Sean Griffin*
|
773
|
-
|
774
|
-
* Don't treat unsigned integers with zerofill as signed.
|
775
|
-
|
776
|
-
Fixes #27125.
|
378
|
+
* Deprecate passing arguments and block at the same time to `count` and `sum` in `ActiveRecord::Calculations`.
|
777
379
|
|
778
380
|
*Ryuta Kamizono*
|
779
381
|
|
780
|
-
*
|
781
|
-
|
782
|
-
*Sergey Alekseev*
|
783
|
-
|
784
|
-
* Raise `ActiveRecord::RecordNotFound` from collection `*_ids` setters
|
785
|
-
for unknown IDs with a better error message.
|
786
|
-
|
787
|
-
Changes the collection `*_ids` setters to cast provided IDs the data
|
788
|
-
type of the primary key set in the association, not the model
|
789
|
-
primary key.
|
790
|
-
|
791
|
-
*Dominic Cleal*
|
792
|
-
|
793
|
-
* For PostgreSQL >= 9.4 use `pgcrypto`'s `gen_random_uuid()` instead of
|
794
|
-
`uuid-ossp`'s UUID generation function.
|
382
|
+
* Loading model schema from database is now thread-safe.
|
795
383
|
|
796
|
-
|
384
|
+
Fixes #28589.
|
797
385
|
|
798
|
-
*
|
799
|
-
of `Article.category(true)` where `category` is a singular
|
800
|
-
association.
|
386
|
+
*Vikrant Chaudhary*, *David Abdemoulaie*
|
801
387
|
|
802
|
-
|
803
|
-
in #
|
804
|
-
|
388
|
+
* Add `ActiveRecord::Base#cache_version` to support recyclable cache keys via the new versioned entries
|
389
|
+
in `ActiveSupport::Cache`. This also means that `ActiveRecord::Base#cache_key` will now return a stable key
|
390
|
+
that does not include a timestamp any more.
|
805
391
|
|
806
|
-
This
|
807
|
-
|
808
|
-
passing true to the association reader used to have.
|
392
|
+
NOTE: This feature is turned off by default, and `#cache_key` will still return cache keys with timestamps
|
393
|
+
until you set `ActiveRecord::Base.cache_versioning = true`. That's the setting for all new apps on Rails 5.2+
|
809
394
|
|
810
|
-
*
|
395
|
+
*DHH*
|
811
396
|
|
812
|
-
*
|
813
|
-
constants defined in `ActiveRecord::Associations::Preloader`.
|
397
|
+
* Respect `SchemaDumper.ignore_tables` in rake tasks for databases structure dump
|
814
398
|
|
815
|
-
*
|
399
|
+
*Rusty Geldmacher*, *Guillermo Iguaran*
|
816
400
|
|
817
|
-
*
|
818
|
-
values for Postgres HStore columns.
|
401
|
+
* Add type caster to `RuntimeReflection#alias_name`
|
819
402
|
|
820
|
-
Fixes #
|
403
|
+
Fixes #28959.
|
821
404
|
|
822
405
|
*Jon Moss*
|
823
406
|
|
824
|
-
*
|
825
|
-
|
826
|
-
Example:
|
827
|
-
|
828
|
-
ActiveRecord::Base.connection_pool.stat # =>
|
829
|
-
{ size: 15, connections: 1, busy: 1, dead: 0, idle: 0, waiting: 0, checkout_timeout: 5 }
|
830
|
-
|
831
|
-
*Pavel Evstigneev*
|
832
|
-
|
833
|
-
* Avoid `unscope(:order)` when `limit_value` is presented for `count`
|
834
|
-
and `exists?`.
|
835
|
-
|
836
|
-
If `limit_value` is presented, records fetching order is very important
|
837
|
-
for performance. We should not unscope the order in the case.
|
407
|
+
* Deprecate `supports_statement_cache?`.
|
838
408
|
|
839
409
|
*Ryuta Kamizono*
|
840
410
|
|
841
|
-
*
|
842
|
-
|
843
|
-
|
844
|
-
Fixes #24195.
|
845
|
-
|
846
|
-
*Sen Zhang*
|
847
|
-
|
848
|
-
* Allow `slice` to take an array of methods(without the need for splatting).
|
849
|
-
|
850
|
-
*Cohen Carlisle*
|
851
|
-
|
852
|
-
* Improved partial writes with HABTM and has many through associations
|
853
|
-
to fire database query only if relation has been changed.
|
854
|
-
|
855
|
-
Fixes #19663.
|
856
|
-
|
857
|
-
*Mehmet Emin İNAÇ*
|
858
|
-
|
859
|
-
* Deprecate passing arguments and block at the same time to
|
860
|
-
`ActiveRecord::QueryMethods#select`.
|
861
|
-
|
862
|
-
*Prathamesh Sonpatki*
|
863
|
-
|
864
|
-
* Fixed: Optimistic locking does not work well with `null` in the database.
|
865
|
-
|
866
|
-
Fixes #26024.
|
411
|
+
* Raise error `UnknownMigrationVersionError` on the movement of migrations
|
412
|
+
when the current migration does not exist.
|
867
413
|
|
868
414
|
*bogdanvlviv*
|
869
415
|
|
870
|
-
*
|
871
|
-
PostgreSQL.
|
872
|
-
|
873
|
-
*Edho Arief*
|
874
|
-
|
875
|
-
* Serialize JSON attribute value `nil` as SQL `NULL`, not JSON `null`.
|
876
|
-
|
877
|
-
*Trung Duc Tran*
|
878
|
-
|
879
|
-
* Return `true` from `update_attribute` when the value of the attribute
|
880
|
-
to be updated is unchanged.
|
881
|
-
|
882
|
-
Fixes #26593.
|
883
|
-
|
884
|
-
*Prathamesh Sonpatki*
|
885
|
-
|
886
|
-
* Always store errors details information with symbols.
|
887
|
-
|
888
|
-
When the association is autosaved we were storing the details with
|
889
|
-
string keys. This was creating inconsistency with other details that are
|
890
|
-
added using the `Errors#add` method. It was also inconsistent with the
|
891
|
-
`Errors#messages` storage.
|
892
|
-
|
893
|
-
To fix this inconsistency we are always storing with symbols. This will
|
894
|
-
cause a small breaking change because in those cases the details could
|
895
|
-
be accessed as strings keys but now it can not.
|
896
|
-
|
897
|
-
Fix #26499.
|
898
|
-
|
899
|
-
*Rafael Mendonça França*, *Marcus Vieira*
|
900
|
-
|
901
|
-
* Calling `touch` on a model using optimistic locking will now leave the model
|
902
|
-
in a non-dirty state with no attribute changes.
|
903
|
-
|
904
|
-
Fixes #26496.
|
905
|
-
|
906
|
-
*Jakob Skjerning*
|
907
|
-
|
908
|
-
* Using a mysql2 connection after it fails to reconnect will now have an error message
|
909
|
-
saying the connection is closed rather than an undefined method error message.
|
416
|
+
* Fix `bin/rails db:forward` first migration.
|
910
417
|
|
911
|
-
*
|
912
|
-
|
913
|
-
* PostgreSQL array columns will now respect the encoding of strings contained
|
914
|
-
in the array.
|
915
|
-
|
916
|
-
Fixes #26326.
|
917
|
-
|
918
|
-
*Sean Griffin*
|
919
|
-
|
920
|
-
* Inverse association instances will now be set before `after_find` or
|
921
|
-
`after_initialize` callbacks are run.
|
922
|
-
|
923
|
-
Fixes #26320.
|
924
|
-
|
925
|
-
*Sean Griffin*
|
926
|
-
|
927
|
-
* Remove unnecessarily association load when a `belongs_to` association has already been
|
928
|
-
loaded then the foreign key is changed directly and the record saved.
|
929
|
-
|
930
|
-
*James Coleman*
|
931
|
-
|
932
|
-
* Remove standardized column types/arguments spaces in schema dump.
|
933
|
-
|
934
|
-
*Tim Petricola*
|
935
|
-
|
936
|
-
* Avoid loading records from database when they are already loaded using
|
937
|
-
the `pluck` method on a collection.
|
938
|
-
|
939
|
-
Fixes #25921.
|
940
|
-
|
941
|
-
*Ryuta Kamizono*
|
942
|
-
|
943
|
-
* Remove text default treated as an empty string in non-strict mode for
|
944
|
-
consistency with other types.
|
945
|
-
|
946
|
-
Strict mode controls how MySQL handles invalid or missing values in
|
947
|
-
data-change statements such as INSERT or UPDATE. If strict mode is not
|
948
|
-
in effect, MySQL inserts adjusted values for invalid or missing values
|
949
|
-
and produces warnings.
|
950
|
-
|
951
|
-
def test_mysql_not_null_defaults_non_strict
|
952
|
-
using_strict(false) do
|
953
|
-
with_mysql_not_null_table do |klass|
|
954
|
-
record = klass.new
|
955
|
-
assert_nil record.non_null_integer
|
956
|
-
assert_nil record.non_null_string
|
957
|
-
assert_nil record.non_null_text
|
958
|
-
assert_nil record.non_null_blob
|
959
|
-
|
960
|
-
record.save!
|
961
|
-
record.reload
|
962
|
-
|
963
|
-
assert_equal 0, record.non_null_integer
|
964
|
-
assert_equal "", record.non_null_string
|
965
|
-
assert_equal "", record.non_null_text
|
966
|
-
assert_equal "", record.non_null_blob
|
967
|
-
end
|
968
|
-
end
|
969
|
-
end
|
970
|
-
|
971
|
-
https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-strict
|
972
|
-
|
973
|
-
*Ryuta Kamizono*
|
974
|
-
|
975
|
-
* SQLite3 migrations to add a column to an existing table can now be
|
976
|
-
successfully rolled back when the column was given and invalid column
|
977
|
-
type.
|
978
|
-
|
979
|
-
Fixes #26087.
|
418
|
+
*bogdanvlviv*
|
980
419
|
|
981
|
-
|
420
|
+
* Support Descending Indexes for MySQL.
|
982
421
|
|
983
|
-
|
422
|
+
MySQL 8.0.1 and higher supports descending indexes: `DESC` in an index definition is no longer ignored.
|
423
|
+
See https://dev.mysql.com/doc/refman/8.0/en/descending-indexes.html.
|
984
424
|
|
985
425
|
*Ryuta Kamizono*
|
986
426
|
|
987
|
-
*
|
988
|
-
force a DISTINCT. This solves issues when using count after a left_joins.
|
989
|
-
|
990
|
-
*Maxime Handfield Lapointe*
|
991
|
-
|
992
|
-
* RecordNotFound raised by association.find exposes `id`, `primary_key` and
|
993
|
-
`model` methods to be consistent with RecordNotFound raised by Record.find.
|
994
|
-
|
995
|
-
*Michel Pigassou*
|
996
|
-
|
997
|
-
* Hashes can once again be passed to setters of `composed_of`, if all of the
|
998
|
-
mapping methods are methods implemented on `Hash`.
|
999
|
-
|
1000
|
-
Fixes #25978.
|
1001
|
-
|
1002
|
-
*Sean Griffin*
|
1003
|
-
|
1004
|
-
* Fix the SELECT statement in `#table_comment` for MySQL.
|
1005
|
-
|
1006
|
-
*Takeshi Akima*
|
1007
|
-
|
1008
|
-
* Virtual attributes will no longer raise when read on models loaded from the
|
1009
|
-
database.
|
1010
|
-
|
1011
|
-
*Sean Griffin*
|
1012
|
-
|
1013
|
-
* Support calling the method `merge` in `scope`'s lambda.
|
1014
|
-
|
1015
|
-
*Yasuhiro Sugino*
|
1016
|
-
|
1017
|
-
* Fixes multi-parameter attributes conversion with invalid params.
|
1018
|
-
|
1019
|
-
*Hiroyuki Ishii*
|
1020
|
-
|
1021
|
-
* Add newline between each migration in `structure.sql`.
|
1022
|
-
|
1023
|
-
Keeps schema migration inserts as a single commit, but allows for easier
|
1024
|
-
git diffing.
|
1025
|
-
|
1026
|
-
Fixes #25504.
|
1027
|
-
|
1028
|
-
*Grey Baker*, *Norberto Lopes*
|
1029
|
-
|
1030
|
-
* The flag `error_on_ignored_order_or_limit` has been deprecated in favor of
|
1031
|
-
the current `error_on_ignored_order`.
|
1032
|
-
|
1033
|
-
*Xavier Noria*
|
1034
|
-
|
1035
|
-
* Batch processing methods support `limit`:
|
1036
|
-
|
1037
|
-
Post.limit(10_000).find_each do |post|
|
1038
|
-
# ...
|
1039
|
-
end
|
1040
|
-
|
1041
|
-
It also works in `find_in_batches` and `in_batches`.
|
1042
|
-
|
1043
|
-
*Xavier Noria*
|
1044
|
-
|
1045
|
-
* Using `group` with an attribute that has a custom type will properly cast
|
1046
|
-
the hash keys after calling a calculation method like `count`.
|
1047
|
-
|
1048
|
-
Fixes #25595.
|
427
|
+
* Fix inconsistency with changed attributes when overriding AR attribute reader.
|
1049
428
|
|
1050
|
-
*
|
1051
|
-
|
1052
|
-
* Fix the generated `#to_param` method to use `omission: ''` so that
|
1053
|
-
the resulting output is actually up to 20 characters, not
|
1054
|
-
effectively 17 to leave room for the default "...".
|
1055
|
-
Also call `#parameterize` before `#truncate` and make the
|
1056
|
-
`separator: /-/` to maximize the information included in the
|
1057
|
-
output.
|
1058
|
-
|
1059
|
-
Fixes #23635.
|
1060
|
-
|
1061
|
-
*Rob Biedenharn*
|
1062
|
-
|
1063
|
-
* Ensure concurrent invocations of the connection reaper cannot allocate the
|
1064
|
-
same connection to two threads.
|
1065
|
-
|
1066
|
-
Fixes #25585.
|
1067
|
-
|
1068
|
-
*Matthew Draper*
|
429
|
+
*bogdanvlviv*
|
1069
430
|
|
1070
|
-
*
|
1071
|
-
|
1072
|
-
cases.
|
431
|
+
* When calling the dynamic fixture accessor method with no arguments, it now returns all fixtures of this type.
|
432
|
+
Previously this method always returned an empty array.
|
1073
433
|
|
1074
434
|
*Kevin McPhillips*
|
1075
435
|
|
1076
|
-
* Removed the unused methods `ActiveRecord::Base.connection_id` and
|
1077
|
-
`ActiveRecord::Base.connection_id=`.
|
1078
|
-
|
1079
|
-
*Sean Griffin*
|
1080
|
-
|
1081
|
-
* Ensure hashes can be assigned to attributes created using `composed_of`.
|
1082
|
-
|
1083
|
-
Fixes #25210.
|
1084
|
-
|
1085
|
-
*Sean Griffin*
|
1086
|
-
|
1087
|
-
* Fix logging edge case where if an attribute was of the binary type and
|
1088
|
-
was provided as a Hash.
|
1089
|
-
|
1090
|
-
*Jon Moss*
|
1091
|
-
|
1092
|
-
* Handle JSON deserialization correctly if the column default from database
|
1093
|
-
adapter returns `''` instead of `nil`.
|
1094
|
-
|
1095
|
-
*Johannes Opper*
|
1096
|
-
|
1097
|
-
* Introduce new Active Record transaction error classes for catching
|
1098
|
-
transaction serialization failures or deadlocks.
|
1099
|
-
|
1100
|
-
*Erol Fornoles*
|
1101
|
-
|
1102
|
-
* PostgreSQL: Fix `db:structure:load` silent failure on SQL error.
|
1103
|
-
|
1104
|
-
The command line flag `-v ON_ERROR_STOP=1` should be used
|
1105
|
-
when invoking `psql` to make sure errors are not suppressed.
|
1106
|
-
|
1107
|
-
Example:
|
1108
|
-
|
1109
|
-
psql -v ON_ERROR_STOP=1 -q -f awesome-file.sql my-app-db
|
1110
|
-
|
1111
|
-
Fixes #23818.
|
1112
|
-
|
1113
|
-
*Ralin Chimev*
|
1114
|
-
|
1115
436
|
|
1116
|
-
Please check [5-
|
437
|
+
Please check [5-1-stable](https://github.com/rails/rails/blob/5-1-stable/activerecord/CHANGELOG.md) for previous changes.
|