CHANGELOG.md 6.6 KB
Newer Older
1 2 3 4
*   The `:name` key will no longer be returned as part of `DatabaseConfig#configuration_hash`. Please use `DatabaseConfig#owner_name` instead.

    *Eileen M. Uchitelle*, *John Crepezzi*

5 6 7 8
*   ActiveRecord's `belongs_to_required_by_default` flag can now be set per model.

    You can now opt-out/opt-in specific models from having their associations required
    by default.
9

10 11 12 13 14
    This change is meant to ease the process of migrating all your models to have
    their association required.

    *Edouard Chin*

J
John Crepezzi 已提交
15 16 17 18
*   The `connection_config` method has been deprecated, please use `connection_db_config` instead which will return a `DatabaseConfigurations::DatabaseConfig` instead of a `Hash`.

    *Eileen M. Uchitelle*, *John Crepezzi*

19 20 21 22 23 24
*   Retain explicit selections on the base model after applying `includes` and `joins`.

    Resolves #34889.

    *Patrick Rebsch*

25 26 27 28
*   The `database` kwarg is deprecated without replacement because it can't be used for sharding and creates an issue if it's used during a request. Applications that need to create new connections should use `connects_to` instead.

    *Eileen M. Uchitelle*, *John Crepezzi*

G
Gannon McGibbon 已提交
29 30 31 32
*   Allow attributes to be fetched from Arel node groupings.

    *Jeff Emminger*, *Gannon McGibbon*

33 34 35 36
*   A database URL can now contain a querystring value that contains an equal sign. This is needed to support passing PostgresSQL `options`.

    *Joshua Flanagan*

37 38 39 40
*   Calling methods like `establish_connection` with a `Hash` which is invalid (eg: no `adapter`) will now raise an error the same way as connections defined in `config/database.yml`.

    *John Crepezzi*

41 42 43 44
*   Specifying `implicit_order_column` now subsorts the records by primary key if available to ensure deterministic results.

    *Paweł Urbanek*

J
John Hawthorn 已提交
45 46 47 48
*   `where(attr => [])` now loads an empty result without making a query.

    *John Hawthorn*

49 50 51 52
*   Fixed the performance regression for `primary_keys` introduced MySQL 8.0.

    *Hiroyuki Ishii*

53 54 55 56
*   Add support for `belongs_to` to `has_many` inversing.

    *Gannon McGibbon*

57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
*   Allow length configuration for `has_secure_token` method. The minimum length
    is set at 24 characters.

    Before:

    ```ruby
    has_secure_token :auth_token
    ```

    After:

    ```ruby
    has_secure_token :default_token             # 24 characters
    has_secure_token :auth_token, length: 36    # 36 characters
    has_secure_token :invalid_token, length: 12 # => ActiveRecord::SecureToken::MinimumLengthError
    ```

    *Bernardo de Araujo*

76 77 78 79
*   Deprecate `DatabaseConfigurations#to_h`. These connection hashes are still available via `ActiveRecord::Base.configurations.configs_for`.

    *Eileen Uchitelle*, *John Crepezzi*

80 81 82 83
*   Add `DatabaseConfig#configuration_hash` to return database configuration hashes with symbol keys, and use all symbol-key configuration hashes internally. Deprecate `DatabaseConfig#config` which returns a String-keyed `Hash` with the same values.

    *John Crepezzi*, *Eileen Uchitelle*

84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
*   Allow column names to be passed to `remove_index` positionally along with other options.

    Passing other options can be necessary to make `remove_index` correctly reversible.

    Before:

        add_index    :reports, :report_id               # => works
        add_index    :reports, :report_id, unique: true # => works
        remove_index :reports, :report_id               # => works
        remove_index :reports, :report_id, unique: true # => ArgumentError

    After:

        remove_index :reports, :report_id, unique: true # => works

    *Eugene Kenny*

101 102 103 104
*   Allow bulk `ALTER` statements to drop and recreate indexes with the same name.

    *Eugene Kenny*

105 106 107 108
*   `insert`, `insert_all`, `upsert`, and `upsert_all` now clear the query cache.

    *Eugene Kenny*

109
*   Call `while_preventing_writes` directly from `connected_to`.
110

111
    In some cases application authors want to use the database switching middleware and make explicit calls with `connected_to`. It's possible for an app to turn off writes and not turn them back on by the time we call `connected_to(role: :writing)`.
112 113 114 115 116

    This change allows apps to fix this by assuming if a role is writing we want to allow writes, except in the case it's explicitly turned off.

    *Eileen M. Uchitelle*

117 118 119 120
*   Improve detection of ActiveRecord::StatementTimeout with mysql2 adapter in the edge case when the query is terminated during filesort.

    *Kir Shatrov*

121 122 123 124
*   Stop trying to read yaml file fixtures when loading Active Record fixtures.

    *Gannon McGibbon*

125 126 127 128 129 130
*   Deprecate `.reorder(nil)` with `.first` / `.first!` taking non-deterministic result.

    To continue taking non-deterministic result, use `.take` / `.take!` instead.

    *Ryuta Kamizono*

131 132 133 134
*   Ensure custom PK types are casted in through reflection queries.

    *Gannon McGibbon*

135 136 137 138 139 140
*   Preserve user supplied joins order as much as possible.

    Fixes #36761, #34328, #24281, #12953.

    *Ryuta Kamizono*

141
*   Allow `matches_regex` and `does_not_match_regexp` on the MySQL Arel visitor.
J
James Pearson 已提交
142 143

    *James Pearson*
144

145 146 147 148
*   Allow specifying fixtures to be ignored by setting `ignore` in YAML file's '_fixture' section.

    *Tongfei Gao*

149 150 151 152
*   Make the DATABASE_URL env variable only affect the primary connection. Add new env variables for multiple databases.

    *John Crepezzi*, *Eileen Uchitelle*

153 154 155 156 157 158 159 160
*   Add a warning for enum elements with 'not_' prefix.

        class Foo
          enum status: [:sent, :not_sent]
        end

    *Edu Depetris*

R
Ryuta Kamizono 已提交
161
*   Make currency symbols optional for money column type in PostgreSQL.
162 163 164

    *Joel Schneider*

165 166 167 168
*   Add support for beginless ranges, introduced in Ruby 2.7.

    *Josh Goodall*

169 170
*   Add database_exists? method to connection adapters to check if a database exists.

R
Roberto Miranda 已提交
171
    *Guilherme Mansur*
172

173 174 175 176
*   Loading the schema for a model that has no `table_name` raises a `TableNotSpecified` error.

    *Guilherme Mansur*, *Eugene Kenny*

177 178 179 180 181 182
*   PostgreSQL: Fix GROUP BY with ORDER BY virtual count attribute.

    Fixes #36022.

    *Ryuta Kamizono*

183 184 185 186 187 188
*   Make ActiveRecord `ConnectionPool.connections` method thread-safe.

    Fixes #36465.

    *Jeff Doering*

189 190 191 192
*   Add support for multiple databases to `rails db:abort_if_pending_migrations`.

    *Mark Lee*

193 194 195 196
*   Fix sqlite3 collation parsing when using decimal columns.

    *Martin R. Schuster*

197
*   Fix invalid schema when primary key column has a comment.
198

199
    Fixes #29966.
200 201 202

    *Guilherme Goettems Schneider*

203
*   Fix table comment also being applied to the primary key column.
204 205 206

    *Guilherme Goettems Schneider*

207
*   Allow generated `create_table` migrations to include or skip timestamps.
208

209 210
    *Michael Duchemin*

211

212
Please check [6-0-stable](https://github.com/rails/rails/blob/6-0-stable/activerecord/CHANGELOG.md) for previous changes.