aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | Deprecate and replace `set_state` methodeileencodes2017-07-011-6/+27
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `set_state` was directly setting the transaction state instance variable. It's better to set the state via specific methods (`rollback!` and `commit!` respectively. While undocumented and untested, it's possible someone is using `set_state` in their app or gem so I've added a deprecation notice to it. No where in the app do we use `nullify!` but I wanted to keep existing behavior while replacing the method with a better pattern.
| * | Revert "Merge pull request #29540 from kirs/rubocop-frozen-string"Matthew Draper2017-07-02242-242/+0
| | | | | | | | | | | | | | | This reverts commit 3420a14590c0e6915d8b6c242887f74adb4120f9, reversing changes made to afb66a5a598ce4ac74ad84b125a5abf046dcf5aa.
| * | Merge pull request #29540 from kirs/rubocop-frozen-stringMatthew Draper2017-07-02242-0/+242
| |\ \ | | | | | | | | | | | | Enforce frozen string in Rubocop
| | * | Enforce frozen string in RubocopKir Shatrov2017-07-01242-0/+242
| | | |
| * | | Merge pull request #29506 from pat/frozen-string-literalsMatthew Draper2017-07-0214-27/+26
| |\ \ \ | | | | | | | | | | | | | | | Make ActiveSupport frozen-string-literal friendly.
| | * | | Make ActiveRecord frozen string literal friendly.Pat Allan2017-06-2014-27/+26
| | | |/ | | |/|
| * | | Merge pull request #29631 from kamipo/should_be_clear_association_idsMatthew Draper2017-07-011-2/+11
| |\ \ \ | | | | | | | | | | Should be clear `@association_ids` when joined newly associated record
| | * | | Should be clear `@association_ids` when joined newly associated recordRyuta Kamizono2017-06-301-2/+11
| | | | | | | | | | | | | | | | | | | | Fixes #29627.
| * | | | Merge pull request #29634 from kamipo/dont_cache_queries_for_schema_statementsMatthew Draper2017-07-0110-55/+70
| |\ \ \ \ | | | | | | | | | | | | Don't cache queries for schema statements
| | * | | | Don't cache queries for schema statementsRyuta Kamizono2017-06-3010-55/+70
| | | |_|/ | | |/| | | | | | | | | | | | | | | | | | | | | | `test_middleware_caches` is sometimes failed since #29454. The failure is due to schema statements are affected by query caching. Bypassing query caching for schema statements to avoid the issue.
| * | | | Merge pull request #28808 from fschwahn/fix-polymorphic-automic-inverseMatthew Draper2017-07-011-4/+3
| |\ \ \ \ | | | | | | | | | | | | Fix automatic inverse for polymorphic interfaces
| | * | | | Remove :polymorphic from INVALID_AUTOMATIC_INVERSE_OPTIONSFabian Schwahn2017-04-201-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes automatic inverse detection possible for polymorphic :has_one & :has_many possible. This resolves a number of issues, eg. `touch: true` on polymorphic relationships (#16446) and automatically setting inverse associations on newly built objects (#15028, #21843).
| * | | | | Merge pull request #29536 from nickrivadeneira/fix-yamlMatthew Draper2017-07-011-1/+1
| |\ \ \ \ \ | | | | | | | | | | | | | | Ensure `false` is preserved in attr serialization
| | * | | | | Ensure `false` is preserved in attr serializationNick Rivadeneira2017-06-221-1/+1
| | | | | | |
* | | | | | | [Active Record] require => require_relativeAkira Matsuda2017-07-0135-135/+135
|/ / / / / /
* | | / / / Delete stale comment for `AR::Associations::Builder::CollectionAssociation`fatkodima2017-07-011-2/+0
| |_|/ / / |/| | | |
* | | | | Merge pull request #29623 from kamipo/should_use_same_connection_in_query_cacheRafael França2017-06-292-4/+4
|\ \ \ \ \ | | | | | | | | | | | | Should use the same connection in using query cache
| * | | | | Should use the same connection in using query cacheRyuta Kamizono2017-06-292-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `test_cache_is_available_when_using_a_not_connected_connection` is always failed if running only the test since #29609. ``` % ARCONN=mysql2 be ruby -w -Itest test/cases/query_cache_test.rb -n test_cache_is_available_when_using_a_not_connected_connection Using mysql2 Run options: -n test_cache_is_available_when_using_a_not_connected_connection --seed 15043 F Finished in 0.070519s, 14.1806 runs/s, 28.3612 assertions/s. 1) Failure: QueryCacheTest#test_cache_is_available_when_using_a_not_connected_connection [test/cases/query_cache_test.rb:336]: 2 instead of 1 queries were executed. Queries: SELECT `tasks`.* FROM `tasks` WHERE `tasks`.`id` = ? LIMIT ? SET NAMES utf8 COLLATE utf8_unicode_ci, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483. Expected: 1 Actual: 2 1 runs, 2 assertions, 1 failures, 0 errors, 0 skips ``` This failure is due to `LogSubscriber` will use not connected `ActiveRecord::Base.connection` even if `Task.connection` is connected. I fixed to always pass `type_casted_binds` to log subscriber to avoid the issue.
* | | | | | Fix the next version of Rails from 5.3 to 6.0Ryuta Kamizono2017-06-291-2/+2
| |_|_|/ / |/| | | |
* | | | | Deprecate delegating to `arel` in `Relation`Ryuta Kamizono2017-06-291-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Active Record doesn't rely delegating to `arel` in the internal since 425f2ca. The delegation is a lower priority than delegating to `klass`, so it is pretty unclear which method is delegated to `arel`. For example, `bind_values` method was removed at b06f64c (a series of changes https://github.com/rails/rails/compare/79f71d3...b06f64c). But a relation still could respond to the method because `arel` also have the same named method (#28976). Removing the delegation will achieve predictable behavior.
* | | | | Merge pull request #29616 from kamipo/remove_unused_aliased_table_nameRafael França2017-06-291-8/+0
|\ \ \ \ \ | | | | | | | | | | | | Remove unused `aliased_table_name` in `Association`
| * | | | | Remove unused `aliased_table_name` in `Association`Ryuta Kamizono2017-06-291-8/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `aliased_table_name` in `Association` was added at a3502c4. `aliased_table_name` in `JoinDependency` (added at 55854c4) is used, but it looks like that added one in `Association` is never used from the beginning.
* | | | | | Merge pull request #29569 from kamipo/fix_to_scoping_is_correctly_restoredRafael França2017-06-292-4/+5
|\ \ \ \ \ \ | |_|/ / / / |/| | | | | Fix to scoping is correctly restored
| * | | | | Fix to scoping is correctly restoredRyuta Kamizono2017-06-292-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This regression was caused by #23004. If STI subclass is using scoping in parent class scoping, `current_scope` in subclass is never restored. I fixed to restore `current_scope` to previous value correctly.
* | | | | | Merge pull request #28932 from ↵Rafael França2017-06-281-10/+0
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | kamipo/remove_method_missing_in_relation_delegation Remove `method_missing` in `Relation::Delegation`
| * | | | | | Remove `method_missing` in `Relation::Delegation`Ryuta Kamizono2017-04-301-10/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The `method_missing` is never reached since 64c53d7c.
* | | | | | | Merge pull request #29612 from kamipo/use_quote_method_rather_than_single_quoteRafael França2017-06-285-13/+12
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Use `quote` method rather than single quotes to identifiers in SQL
| * | | | | | | Use `quote` method rather than single quotes to identifiers in SQLRyuta Kamizono2017-06-295-13/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Because identifiers in SQL could include a single quote. Related #24950, #26784.
* | | | | | | | Merge pull request #29129 from kamipo/prevent_extra_through_scopeRafael França2017-06-281-2/+4
|\ \ \ \ \ \ \ \ | |_|_|/ / / / / |/| | | | | | | Prevent extra `through_scope`
| * | | | | | | Prevent extra `through_scope`Ryuta Kamizono2017-05-181-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We can reuse `through_scope` for `reset_association`.
* | | | | | | | Merge pull request #29301 from kamipo/receiver_in_scope_should_be_relationRafael França2017-06-281-1/+1
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | The receiver in a scope should be a `relation`
| * | | | | | | | The receiver in a scope should be a `relation`Ryuta Kamizono2017-06-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently the receiver in a scope is `klass`, not `relation`. I think it is a strange because the receiver in `default_scope` and a scope on association is `relation`. I fixed to the receiver is to be a `relation` properly for consistency.
* | | | | | | | | Merge pull request #29076 from ↵Rafael França2017-06-281-1/+1
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | kamipo/use_timestamp_attributes_for_update_in_model Use `timestamp_attributes_for_update_in_model` rather than `timestamp_attributes_for_update`
| * | | | | | | | | Use `timestamp_attributes_for_update_in_model` rather than ↵Ryuta Kamizono2017-05-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `timestamp_attributes_for_update`
* | | | | | | | | | Merge pull request #28928 from kamipo/remove_habtm_initializeRafael França2017-06-281-4/+0
|\ \ \ \ \ \ \ \ \ \ | |_|_|_|_|_|/ / / / |/| | | | | | | | | Remove `HasAndBelongsToManyReflection#initialize`
| * | | | | | | | | Remove `HasAndBelongsToManyReflection#initialize`Ryuta Kamizono2017-04-291-4/+0
| | |_|_|_|/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | It is delegating `super` only.
* | | | | | | | | Merge pull request #29405 from kamipo/locked_should_not_build_arelRafael França2017-06-285-9/+6
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | `Relation#locked?` should not build arel
| * | | | | | | | | Remove delegating to arel in a relationRyuta Kamizono2017-06-294-8/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The delegation was needed since passing `relation` with `relation.bound_attributes`. It should use `relation.arel` in that case.
| * | | | | | | | | `Relation#locked?` should not build arelRyuta Kamizono2017-06-201-1/+1
| | | | | | | | | |
* | | | | | | | | | Merge pull request #29601 from ↵Rafael Mendonça França2017-06-281-1/+1
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | kamipo/fix_eager_loading_to_respect_store_full_sti_class Fix eager loading to respect `store_full_sti_class` setting
| * | | | | | | | | | Fix eager loading to respect `store_full_sti_class` settingRyuta Kamizono2017-06-291-1/+1
| | |_|_|_|_|/ / / / | |/| | | | | | | |
* | | | | | | | | | Merge pull request #29610 from ↵Rafael França2017-06-284-7/+7
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | kamipo/dont_passing_klass_connection_to_association_scope Don't passing `klass.connection` to `AssociationScope`
| * | | | | | | | | | Don't passing `klass.connection` to `AssociationScope`Ryuta Kamizono2017-06-294-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Passing `klass.connection` is redundant because `AssociationScope` is passed an association itself and an association has `klass`.
* | | | | | | | | | | Merge pull request #29609 from tsukasaoishi/query_cache_from_beginningRafael França2017-06-281-6/+6
|\ \ \ \ \ \ \ \ \ \ \ | |_|/ / / / / / / / / |/| | | | | | | | | | Enable query cache if set a configurations
| * | | | | | | | | | Enable query cache if set a configurationsTsukasa OISHI2017-06-291-6/+6
| |/ / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ActiveRecord query cache is available when a connection is connected. Therefore, query cache is unavailable when entering the ActiveRecord::Base.cache block without being connected. ```ruby ActiveRecord::Base.cache do Task.find(1) # access to database. Task.find(1) # access to database. unavailable query cache end ``` If we use query cache with batch script etc, we need to connect before that. ```ruby Task.connection ActiveRecord::Base.cache do Task.find(1) # access to database. Task.find(1) # available query cache end ``` Before version 3.1, query cache had been enabled if a configuration was set up. In order to solve the `DATABASE_URL` issue(#8074), ActiveRecord has checked whether a connection is connected or not. Today, ActiveRecord.configurations respect `DATABASE_URL`. https://github.com/rails/rails/blob/master/activerecord/lib/active_record/core.rb#L46
* | | | | | | | | | Merge pull request #29604 from ↵Rafael França2017-06-281-4/+1
|\ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | kamipo/fix_ids_reader_to_respect_case_sensitive_pk Fix `ids_reader` to respect case sensitive primary key
| * | | | | | | | | Fix `ids_reader` to respect case sensitive primary keyRyuta Kamizono2017-06-281-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ```ruby car = Car.create!(name: "Tofaş") # Before car.bulb_ids # => SELECT "bulbs".ID FROM "bulbs" WHERE "bulbs"."name" = $1 AND "bulbs"."car_id" = $2 [["name", "defaulty"], ["car_id", 3]] # After car.bulb_ids # => SELECT "bulbs"."ID" FROM "bulbs" WHERE "bulbs"."name" = $1 AND "bulbs"."car_id" = $2 [["name", "defaulty"], ["car_id", 3]] ```
* | | | | | | | | | Merge pull request #29593 from kratob/masterEileen M. Uchitelle2017-06-281-0/+5
|\ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / |/| | | | | | | | | ActiveRecord: do not create "has many through" records that have been removed
| * | | | | | | | | ActiveRecord: do not create "has many through" records that have been removedTobias Kraze2017-06-281-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a record was built on a HasManyThroughAssociation, then removed, and then the record was saved, the removed record would be created anyways.
* | | | | | | | | | Merge pull request #29556 from kamipo/extract_ordered_relationRafael França2017-06-271-12/+11
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | Extract `ordered_relation` in `FinderMethods`