activerecord 7.1.0 → 7.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of activerecord might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +95 -0
- data/README.rdoc +1 -0
- data/lib/active_record/associations.rb +14 -14
- data/lib/active_record/attribute_methods/dirty.rb +13 -9
- data/lib/active_record/callbacks.rb +2 -2
- data/lib/active_record/connection_adapters/abstract/database_statements.rb +5 -3
- data/lib/active_record/connection_adapters/abstract/schema_statements.rb +1 -3
- data/lib/active_record/connection_adapters/abstract_adapter.rb +13 -4
- data/lib/active_record/connection_adapters/mysql2/database_statements.rb +3 -0
- data/lib/active_record/connection_adapters/postgresql/column.rb +14 -2
- data/lib/active_record/connection_adapters/postgresql/database_statements.rb +4 -1
- data/lib/active_record/connection_adapters/postgresql/oid/money.rb +3 -2
- data/lib/active_record/connection_adapters/postgresql/oid/timestamp_with_time_zone.rb +1 -1
- data/lib/active_record/connection_adapters/postgresql/schema_statements.rb +14 -6
- data/lib/active_record/connection_adapters/postgresql_adapter.rb +32 -32
- data/lib/active_record/connection_adapters/sqlite3/database_statements.rb +10 -3
- data/lib/active_record/connection_adapters/trilogy/database_statements.rb +1 -0
- data/lib/active_record/core.rb +25 -24
- data/lib/active_record/encryption/extended_deterministic_queries.rb +0 -15
- data/lib/active_record/enum.rb +6 -9
- data/lib/active_record/gem_version.rb +1 -1
- data/lib/active_record/insert_all.rb +3 -3
- data/lib/active_record/internal_metadata.rb +3 -1
- data/lib/active_record/migration/command_recorder.rb +4 -1
- data/lib/active_record/migration/pending_migration_connection.rb +21 -0
- data/lib/active_record/migration.rb +6 -3
- data/lib/active_record/model_schema.rb +5 -5
- data/lib/active_record/nested_attributes.rb +7 -9
- data/lib/active_record/normalization.rb +8 -0
- data/lib/active_record/promise.rb +1 -1
- data/lib/active_record/railtie.rb +1 -1
- data/lib/active_record/railties/databases.rake +5 -5
- data/lib/active_record/reflection.rb +12 -0
- data/lib/active_record/relation/calculations.rb +16 -8
- data/lib/active_record/relation/query_methods.rb +1 -1
- data/lib/active_record/schema_migration.rb +1 -1
- data/lib/active_record/timestamp.rb +1 -1
- data/lib/arel/nodes/homogeneous_in.rb +1 -1
- metadata +10 -9
| @@ -93,7 +93,8 @@ module ActiveRecord | |
| 93 93 | 
             
                  end
         | 
| 94 94 | 
             
                end
         | 
| 95 95 |  | 
| 96 | 
            -
                # Same as  | 
| 96 | 
            +
                # Same as #count, but performs the query asynchronously and returns an
         | 
| 97 | 
            +
                # ActiveRecord::Promise.
         | 
| 97 98 | 
             
                def async_count(column_name = nil)
         | 
| 98 99 | 
             
                  async.count(column_name)
         | 
| 99 100 | 
             
                end
         | 
| @@ -106,7 +107,8 @@ module ActiveRecord | |
| 106 107 | 
             
                  calculate(:average, column_name)
         | 
| 107 108 | 
             
                end
         | 
| 108 109 |  | 
| 109 | 
            -
                # Same as  | 
| 110 | 
            +
                # Same as #average, but performs the query asynchronously and returns an
         | 
| 111 | 
            +
                # ActiveRecord::Promise.
         | 
| 110 112 | 
             
                def async_average(column_name)
         | 
| 111 113 | 
             
                  async.average(column_name)
         | 
| 112 114 | 
             
                end
         | 
| @@ -120,7 +122,8 @@ module ActiveRecord | |
| 120 122 | 
             
                  calculate(:minimum, column_name)
         | 
| 121 123 | 
             
                end
         | 
| 122 124 |  | 
| 123 | 
            -
                # Same as  | 
| 125 | 
            +
                # Same as #minimum, but performs the query asynchronously and returns an
         | 
| 126 | 
            +
                # ActiveRecord::Promise.
         | 
| 124 127 | 
             
                def async_minimum(column_name)
         | 
| 125 128 | 
             
                  async.minimum(column_name)
         | 
| 126 129 | 
             
                end
         | 
| @@ -134,7 +137,8 @@ module ActiveRecord | |
| 134 137 | 
             
                  calculate(:maximum, column_name)
         | 
| 135 138 | 
             
                end
         | 
| 136 139 |  | 
| 137 | 
            -
                # Same as  | 
| 140 | 
            +
                # Same as #maximum, but performs the query asynchronously and returns an
         | 
| 141 | 
            +
                # ActiveRecord::Promise.
         | 
| 138 142 | 
             
                def async_maximum(column_name)
         | 
| 139 143 | 
             
                  async.maximum(column_name)
         | 
| 140 144 | 
             
                end
         | 
| @@ -152,7 +156,8 @@ module ActiveRecord | |
| 152 156 | 
             
                  end
         | 
| 153 157 | 
             
                end
         | 
| 154 158 |  | 
| 155 | 
            -
                # Same as  | 
| 159 | 
            +
                # Same as #sum, but performs the query asynchronously and returns an
         | 
| 160 | 
            +
                # ActiveRecord::Promise.
         | 
| 156 161 | 
             
                def async_sum(identity_or_column = nil)
         | 
| 157 162 | 
             
                  async.sum(identity_or_column)
         | 
| 158 163 | 
             
                end
         | 
| @@ -287,7 +292,8 @@ module ActiveRecord | |
| 287 292 | 
             
                  end
         | 
| 288 293 | 
             
                end
         | 
| 289 294 |  | 
| 290 | 
            -
                # Same as  | 
| 295 | 
            +
                # Same as #pluck, but performs the query asynchronously and returns an
         | 
| 296 | 
            +
                # ActiveRecord::Promise.
         | 
| 291 297 | 
             
                def async_pluck(*column_names)
         | 
| 292 298 | 
             
                  async.pluck(*column_names)
         | 
| 293 299 | 
             
                end
         | 
| @@ -315,7 +321,8 @@ module ActiveRecord | |
| 315 321 | 
             
                  limit(1).pluck(*column_names).then(&:first)
         | 
| 316 322 | 
             
                end
         | 
| 317 323 |  | 
| 318 | 
            -
                # Same as  | 
| 324 | 
            +
                # Same as #pick, but performs the query asynchronously and returns an
         | 
| 325 | 
            +
                # ActiveRecord::Promise.
         | 
| 319 326 | 
             
                def async_pick(*column_names)
         | 
| 320 327 | 
             
                  async.pick(*column_names)
         | 
| 321 328 | 
             
                end
         | 
| @@ -358,7 +365,8 @@ module ActiveRecord | |
| 358 365 | 
             
                  result.then { |result| type_cast_pluck_values(result, columns) }
         | 
| 359 366 | 
             
                end
         | 
| 360 367 |  | 
| 361 | 
            -
                # Same as  | 
| 368 | 
            +
                # Same as #ids, but performs the query asynchronously and returns an
         | 
| 369 | 
            +
                # ActiveRecord::Promise.
         | 
| 362 370 | 
             
                def async_ids
         | 
| 363 371 | 
             
                  async.ids
         | 
| 364 372 | 
             
                end
         | 
| @@ -588,7 +588,7 @@ module ActiveRecord | |
| 588 588 | 
             
                #   User.order(Arel.sql('end_date - start_date'))
         | 
| 589 589 | 
             
                #   # SELECT "users".* FROM "users" ORDER BY end_date - start_date
         | 
| 590 590 | 
             
                #
         | 
| 591 | 
            -
                # Custom query syntax, like JSON columns for  | 
| 591 | 
            +
                # Custom query syntax, like JSON columns for PostgreSQL, is supported in this way.
         | 
| 592 592 | 
             
                #
         | 
| 593 593 | 
             
                #   User.order(Arel.sql("payload->>'kind'"))
         | 
| 594 594 | 
             
                #   # SELECT "users".* FROM "users" ORDER BY payload->>'kind'
         | 
| @@ -6,7 +6,7 @@ module ActiveRecord | |
| 6 6 | 
             
              # number is inserted in to the schema migrations table so it doesn't need
         | 
| 7 7 | 
             
              # to be executed the next time.
         | 
| 8 8 | 
             
              class SchemaMigration # :nodoc:
         | 
| 9 | 
            -
                class NullSchemaMigration
         | 
| 9 | 
            +
                class NullSchemaMigration # :nodoc:
         | 
| 10 10 | 
             
                end
         | 
| 11 11 |  | 
| 12 12 | 
             
                attr_reader :connection, :arel_table
         | 
| @@ -30,7 +30,7 @@ module ActiveRecord | |
| 30 30 | 
             
              #
         | 
| 31 31 | 
             
              #   ActiveRecord::Base.time_zone_aware_types = [:datetime]
         | 
| 32 32 | 
             
              #
         | 
| 33 | 
            -
              # You can also add database | 
| 33 | 
            +
              # You can also add database-specific timezone aware types. For example, for PostgreSQL:
         | 
| 34 34 | 
             
              #
         | 
| 35 35 | 
             
              #   ActiveRecord::Base.time_zone_aware_types += [:tsrange, :tstzrange]
         | 
| 36 36 | 
             
              #
         | 
| @@ -48,7 +48,7 @@ module Arel # :nodoc: all | |
| 48 48 | 
             
                  end
         | 
| 49 49 |  | 
| 50 50 | 
             
                  def proc_for_binds
         | 
| 51 | 
            -
                    -> value { ActiveModel::Attribute.with_cast_value(attribute.name, value,  | 
| 51 | 
            +
                    -> value { ActiveModel::Attribute.with_cast_value(attribute.name, value, ActiveModel::Type.default_value) }
         | 
| 52 52 | 
             
                  end
         | 
| 53 53 |  | 
| 54 54 | 
             
                  def fetch_attribute(&block)
         | 
    
        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: 7.1. | 
| 4 | 
            +
              version: 7.1.2
         | 
| 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: 2023-10 | 
| 11 | 
            +
            date: 2023-11-10 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: activesupport
         | 
| @@ -16,28 +16,28 @@ dependencies: | |
| 16 16 | 
             
                requirements:
         | 
| 17 17 | 
             
                - - '='
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: 7.1. | 
| 19 | 
            +
                    version: 7.1.2
         | 
| 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: 7.1. | 
| 26 | 
            +
                    version: 7.1.2
         | 
| 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: 7.1. | 
| 33 | 
            +
                    version: 7.1.2
         | 
| 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: 7.1. | 
| 40 | 
            +
                    version: 7.1.2
         | 
| 41 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 42 | 
             
              name: timeout
         | 
| 43 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -279,6 +279,7 @@ files: | |
| 279 279 | 
             
            - lib/active_record/migration/default_strategy.rb
         | 
| 280 280 | 
             
            - lib/active_record/migration/execution_strategy.rb
         | 
| 281 281 | 
             
            - lib/active_record/migration/join_table.rb
         | 
| 282 | 
            +
            - lib/active_record/migration/pending_migration_connection.rb
         | 
| 282 283 | 
             
            - lib/active_record/model_schema.rb
         | 
| 283 284 | 
             
            - lib/active_record/nested_attributes.rb
         | 
| 284 285 | 
             
            - lib/active_record/no_touching.rb
         | 
| @@ -469,10 +470,10 @@ licenses: | |
| 469 470 | 
             
            - MIT
         | 
| 470 471 | 
             
            metadata:
         | 
| 471 472 | 
             
              bug_tracker_uri: https://github.com/rails/rails/issues
         | 
| 472 | 
            -
              changelog_uri: https://github.com/rails/rails/blob/v7.1. | 
| 473 | 
            -
              documentation_uri: https://api.rubyonrails.org/v7.1. | 
| 473 | 
            +
              changelog_uri: https://github.com/rails/rails/blob/v7.1.2/activerecord/CHANGELOG.md
         | 
| 474 | 
            +
              documentation_uri: https://api.rubyonrails.org/v7.1.2/
         | 
| 474 475 | 
             
              mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
         | 
| 475 | 
            -
              source_code_uri: https://github.com/rails/rails/tree/v7.1. | 
| 476 | 
            +
              source_code_uri: https://github.com/rails/rails/tree/v7.1.2/activerecord
         | 
| 476 477 | 
             
              rubygems_mfa_required: 'true'
         | 
| 477 478 | 
             
            post_install_message:
         | 
| 478 479 | 
             
            rdoc_options:
         |