aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
Commit message (Collapse)AuthorAgeFilesLines
* 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`
| * | | | | | | Extract `ordered_relation` in `FinderMethods`Ryuta Kamizono2017-06-241-12/+11
| | | | | | | |
* | | | | | | | Merge pull request #29589 from kamipo/refactor_join_scopeRafael França2017-06-273-54/+21
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Refactor join dependency to move building constraints to `join_scope` in `Reflection`
| * | | | | | | | Move building constraint to `join_scope` in `Reflection`Ryuta Kamizono2017-06-272-41/+14
| | | | | | | | |
| * | | | | | | | Move constructing polymorphic type to `join_scope` in `Reflection`Ryuta Kamizono2017-06-273-16/+10
| | |/ / / / / / | |/| | | | | |
* / | | | | | | Skip instantiating `NullPreloader` if `assoc.klass` is nilRyuta Kamizono2017-06-271-11/+3
|/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | Simply we can skip instantiating `NullPreloader` if `assoc.klass` is nil.
* | | | | | | Merge pull request #29571 from kamipo/fix_extracting_references_via_order_valuesRafael França2017-06-261-1/+1
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Fix extracting `references` via `order_values` to respect quoting
| * | | | | | | Fix extracting `references` via `order_values` to respect quotingRyuta Kamizono2017-06-261-1/+1
| |/ / / / / /
* | | | | | | Merge pull request #29557 from kamipo/extract_build_scope_and_predicate_builderRafael França2017-06-263-20/+21
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Extract `build_scope` and `predicate_builder` in `Reflection`
| * | | | | | | Move constructing join scope to `Reflection`Ryuta Kamizono2017-06-262-13/+12
| | | | | | | |
| * | | | | | | Extract `build_scope` and `predicate_builder` in `Reflection`Ryuta Kamizono2017-06-243-12/+14
| |/ / / / / /
* | | | | | | Merge pull request #29568 from kamipo/ensure_using_correct_alias_trackerRafael França2017-06-263-14/+18
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Ensure that using correct alias tracker
| * | | | | | | The AliasTracker#aliased_table_for needs the type caster for the joined ↵Ray Zane2017-06-253-14/+18
| |/ / / / / / | | | | | | | | | | | | | | | | | | | | | association, not the join root
* | | | | | | Merge pull request #29511 from jhawthorn/clear_offsets_cache_on_collection_proxyRafael França2017-06-261-0/+1
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Rails 5.1.2.rc1 regression - Clear offset cache on CollectionProxy reset/reload
| * | | | | | | Move clearing of @offsets cache to reset_scopeJohn Hawthorn2017-06-211-2/+1
| | | | | | | |
| * | | | | | | Clear offset cache on CollectionProxy reset/reloadJohn Hawthorn2017-06-201-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The `@offsets` cache is used by FinderMethods to cache records found by find_nth. This cache is cleared in AR::Relation#reset, but not in CollectionProxy#reset or CollectionProxy#reload. Because of this, since #29098, calling #first/#find_nth/etc after calling #reload or #reset on an association could return a stale record. This is an issue both when the full association target is loaded and when the item is loaded in #find_nth. This commit solves the problem by clearing the `@offsets` cache in CollectionProxy#reset and CollectionProxy#reload.
* | | | | | | | Merge pull request #29519 from Edouard-chin/ec-structure-flags-orderRafael França2017-06-261-2/+2
|\ \ \ \ \ \ \ \ | |_|/ / / / / / |/| | | | | | | Pass `structure_dump_flags` / `structure_load_flags` options before any other:
| * | | | | | | PR ReviewEdouard CHIN2017-06-211-2/+2
| | | | | | | |
| * | | | | | | pass `structure_dump_flags` / `structure_load_flags` options before any other:Edouard CHIN2017-06-211-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - On Mysql, some command line options that affect option-file handling such as `--no-defaults` have to be passed before any other options - Modified rails to pass them right after the `mysql` command - Ref https://dev.mysql.com/doc/refman/5.7/en/option-file-options.html and https://bugs.mysql.com/bug.php?id=83386 - Ref #27437
* | | | | | | | Merge pull request #29513 from kirs/fixture-yaml-fallbackRafael França2017-06-211-5/+4
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | Avoid begin/rescue in fixture quoting
| * | | | | | | | Avoid begin/rescue in fixture quotingKir Shatrov2017-06-201-5/+4
| | |/ / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Scalar values like arrays and hashes can't be inserted directly into table. Previously, the way to determine if the value is scalar was to try quoting it. If `quote` raised with an error than the value has to be converted to YAML. This flow is not very obvious. Ideally we could have a `quotable?` method in the connection, but I think that we can avoid begin/rescue block by simply checking if the value is Array or Hash. https://github.com/rails/rails/commit/aa31d21f5f4fc4d679e74a60f9df9706da7de373
* / | | | | | | Keep INNER JOIN when merging relationsMaxime Lapointe2017-06-201-3/+3
|/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Doing `Author.joins(:posts).merge(Post.joins(:comments))` does this `SELECT ... INNER JOIN posts ON... LEFT OUTER JOIN comments ON...` instead of doing `SELECT ... INNER JOIN posts ON... INNER JOIN comments ON...`. This behavior is unexpected and makes little sense as, basically, doing `Post.joins(:comments)` means I want posts that have comments. Turning it to a LEFT JOIN means I want posts and join the comments data, if any. We can see this problem directly in the existing tests. The test_relation_merging_with_merged_joins_as_symbols only does joins from posts to comments to ratings while the ratings fixture isn't loaded, but the count is non-zero.
* | | | | | | Fix ActiveRecord::Persistence#touch with lockingbogdanvlviv2017-06-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `ActiveRecord::Persistence#touch` does not work well when optimistic locking enabled and `locking_column`, without default value, is null in the database.
* | | | | | | Fix destroy with locking_column value nullbogdanvlviv2017-06-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix destroying existing object does not work well when optimistic locking enabled and `locking column` is null in the database. Follow 22a822e5813ef7ea9ab6dbbb670a363899a083af, #28914
* | | | | | | Merge pull request #29504 from kirs/fixtures-arel-bulkRafael França2017-06-204-9/+74
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | Use bulk INSERT to insert fixtures