aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #25107 from Erol/introduce-new-ar-transaction-error-classesRafael Mendonça França2016-08-033-4/+17
|\ | | | | | | | | | | Introduce new ActiveRecord transaction error classes Closes #26018
| * Introduce new ActiveRecord transaction error classesErol Fornoles2016-05-243-4/+17
| |
* | Merge pull request #26026 from ↵Rafael França2016-08-031-1/+1
|\ \ | | | | | | | | | | | | kamipo/tx_serialization_error_should_inherit_statement_invalid `TransactionSerializationError` should inherit `StatementInvalid` for backward compatibility
| * | `TransactionSerializationError` should inherit `StatementInvalid` for ↵Ryuta Kamizono2016-08-021-1/+1
| | | | | | | | | | | | | | | | | | | | | backward compatibility Originally `TransactionSerializationError` was `StatementInvalid` in Rails 5.0. It should keep backward compatibility.
* | | Avoid duplicated `set_inverse_instance` for target scopeRyuta Kamizono2016-08-033-23/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | Because `scope` (`target_scope`) is a `AssociationRelation`. `AssociationRelation` handles `set_inverse_instance`. https://github.com/rails/rails/blob/v5.0.0/activerecord/lib/active_record/association_relation.rb#L31-L33 See also #26022.
* | | Merge pull request #26022 from kamipo/remove_unnecessary_set_inverse_instanceKasper Timm Hansen2016-08-021-6/+2
|\ \ \ | | | | | | | | Remove unnecessary `set_inverse_instance` in finder methods
| * | | Remove unnecessary `set_inverse_instance` in finder methodsRyuta Kamizono2016-08-021-6/+2
| |/ / | | | | | | | | | | | | | | | | | | Because `scope` (`target_scope`) is a `AssociationRelation`. `AssociationRelation` handles `set_inverse_instance`. https://github.com/rails/rails/blob/v5.0.0/activerecord/lib/active_record/association_relation.rb#L31-L33
* | | Remove extra connection pool creationArthur Neves2016-08-021-1/+0
| | |
* | | Merge branch 'master' of github.com:rails/docrailsVijay Dev2016-08-021-1/+1
|\ \ \ | |/ / |/| |
| * | Fix documentation of `index` option for the `add_reference` method [ci skip]Prathamesh Sonpatki2016-07-161-1/+1
| | | | | | | | | | | | - Followup of https://github.com/rails/rails/pull/23179.
* | | Remove unnecessary methods for `NullRelation`Ryuta Kamizono2016-07-291-29/+7
| | |
* | | Merge pull request #25941 from kamipo/finder_methods_uses_load_targetRafael França2016-07-282-5/+5
|\ \ \ | | | | | | | | `FinderMethods` uses `records` (`load_target`) when `loaded?` is true
| * | | `FinderMethods` uses `records` (`load_target`) when `loaded?` is trueRyuta Kamizono2016-07-282-5/+5
| | | |
* | | | Merge pull request #25940 from kamipo/fix_collection_proxy_loadRafael França2016-07-281-0/+6
|\ \ \ \ | | | | | | | | | | Fix to `CollectionProxy#load` does `load_target`
| * | | | Fix to `CollectionProxy#load` does `load_target`Ryuta Kamizono2016-07-251-0/+6
| |/ / /
* | | | Merge pull request #25937 from kamipo/remove_prepare_binds_for_databaseRafael França2016-07-284-8/+4
|\ \ \ \ | | | | | | | | | | Remove `prepare_binds_for_database` internal method
| * | | | Remove `prepare_binds_for_database` internal methodRyuta Kamizono2016-07-284-8/+4
| | | | | | | | | | | | | | | | | | | | To avoid relying on the connection adapter for type casting binds.
* | | | | Merge pull request #25340 from kamipo/prevent_table_comment_queryRafael França2016-07-283-7/+17
|\ \ \ \ \ | | | | | | | | | | | | Prevent `table_comment` query if a table doesn't have a comment
| * | | | | Prevent `table_comment` query if a table doesn't have a commentRyuta Kamizono2016-06-103-7/+17
| | | | | |
* | | | | | Merge pull request #25974 from ↵Rafael França2016-07-281-2/+4
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | kamipo/avoid_calling_current_database_in_table_comment Avoid calling `current_database` in `table_comment`
| * | | | | | Avoid calling `current_database` in `table_comment`Ryuta Kamizono2016-07-281-2/+4
| | |/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | `current_database` executes a query and `table_comment` is called to all tables even if a table does not have a comment. Using `current_database` increases extra queries.
* / | | | | `@quoted_{column,table}_names` should cache a frozen stringRyuta Kamizono2016-07-283-5/+5
|/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Caching a mutable string causes the following issue. ``` Loading development environment (Rails 5.1.0.alpha) irb(main):001:0> ActiveRecord::Base.connection.quote_table_name('foo') << '!!' => "`foo`!!" irb(main):002:0> ActiveRecord::Base.connection.quote_table_name('foo') << '!!' => "`foo`!!!!" irb(main):003:0> ActiveRecord::Base.connection.quote_table_name('foo') << '!!' => "`foo`!!!!!!" ```
* | | | | Merge pull request #25767 from ↵Rafael França2016-07-271-3/+3
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | kamipo/association_name_is_the_same_as_join_table_name Correctly return `associated_table` when `associated_with?` is true
| * | | | | Correctly return `associated_table` when `associated_with?` is trueRyuta Kamizono2016-07-101-3/+3
| | |_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | `AssociationQueryHandler` requires `association` initialized `TableMetadata` even if `table_name == arel_table.name`. Fixes #25689.
* | | | | Add the TABLE_SCHEMA condition to the SELECT statement in table_comment (#25945)Takeshi AKIMA2016-07-271-1/+2
| | | | | | | | | | | | | | | [Rafael Mendonça França + Takeshi AKIMA]
* | | | | Merge pull request #25702 from k0kubun/joins-circular-referenceSean Griffin2016-07-271-1/+3
|\ \ \ \ \ | | | | | | | | | | | | Remove circular join references in join_dependency
| * | | | | Remove circular join references in join_dependencyTakashi Kokubun2016-07-281-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | Fixes #25653.
* | | | | | Merge pull request #25938 from ↵Rafael França2016-07-272-10/+10
|\ \ \ \ \ \ | |/ / / / / |/| | | | | | | | | | | | | | | | | kamipo/decouple_statement_cache_from_connection_adapter Decouple statement cache from connection adapter
| * | | | | Decouple statement cache from connection adapterRyuta Kamizono2016-07-242-10/+10
| | |_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | | `StatementCache` is hard-coded in `cacheable_query` and be passed `visitor` and `collector` from connection adapter. Simply it is enough to pass a collected value.
* | | | | Merge pull request #25408 from kamipo/should_not_reuse_quoted_trueYves Senn2016-07-272-5/+5
|\ \ \ \ \ | | | | | | | | | | | | Quoting booleans should return a frozen string
| * | | | | Quoting booleans should return a frozen stringRyuta Kamizono2016-07-272-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If reuse `QUOTED_TRUE` and `QUOTED_FALSE` without frozen, causing the following issue. ``` Loading development environment (Rails 5.1.0.alpha) irb(main):001:0> ActiveRecord::Base.connection.quote(true) << ' foo' => "1 foo" irb(main):002:0> ActiveRecord::Base.connection.quote(true) << ' foo' => "1 foo foo" irb(main):003:0> type = ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter::MysqlString.new => #<ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter::MysqlString:0x007fd40c15e018 @precision=nil, @scale=nil, @limit=nil> irb(main):004:0> type.serialize(true) << ' bar' => "1 foo foo bar" irb(main):005:0> type.cast(true) << ' bar' => "1 foo foo bar bar" ```
* | | | | | Merge pull request #25523 from kamipo/extract_quoted_binds_type_casted_bindsSean Griffin2016-07-264-6/+10
|\ \ \ \ \ \ | | | | | | | | | | | | | | Extract `type_casted_binds` method
| * | | | | | Extract `type_casted_binds` methodRyuta Kamizono2016-07-264-6/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Because `type_cast` against `binds` always requires `attr.value_for_database` and this pattern appears frequently.
* | | | | | | Merge pull request #25929 from kamipo/load_target_is_public_methodSantiago Pastorino2016-07-261-1/+1
|\ \ \ \ \ \ \ | |_|/ / / / / |/| | | | | | `load_target` is a public method
| * | | | | | `load_target` is a public methodRyuta Kamizono2016-07-231-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | `send` is unnecessary.
* | | | | | | Correct the behavior of virtual attributes on models loaded from the dbSean Griffin2016-07-255-12/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously we had primarily tested the behavior of these attributes by calling `.new`, allowing this to slip through the cracks. There were a few ways in which they were behaving incorrectly. The biggest issue was that attempting to read the attribute would through a `MissingAttribute` error. We've corrected this by returning the default value when the attribute isn't backed by a database column. This is super special cased, but I don't see a way to avoid this conditional. I had considered handling this higher up in `define_default_attribute`, but we don't have the relevant information there as users can provide new defaults for database columns as well. Once I corrected this, I had noticed that the attributes were always being marked as changed. This is because the behavior of `define_default_attribute` was treating them as assigned from `Attribute::Null`. Finally, with our new implementation, `LazyAttributeHash` could no longer be marshalled, as it holds onto a proc. This has been corrected as well. I've not handled YAML in that class, as we do additional work higher up to avoid YAML dumping it at all. Fixes #25787 Close #25841
* | | | | | | adds missing requiresXavier Noria2016-07-247-1/+10
| |_|/ / / / |/| | | | |
* | | | | | systematic revision of =~ usage in ARXavier Noria2016-07-2311-14/+19
|/ / / / / | | | | | | | | | | | | | | | | | | | | Where appropriatei, prefer the more concise Regexp#match?, String#include?, String#start_with?, or String#end_with?
* | | | | Remove tab chars before commands to be runÉtienne Barrié2016-07-201-4/+4
| | | | |
* | | | | Merge pull request #25885 from kamipo/fix_explain_logging_with_bindsRafael França2016-07-201-9/+20
|\ \ \ \ \ | | | | | | | | | | | | Fix explain logging with binds
| * | | | | Fix explain logging with bindsRyuta Kamizono2016-07-201-9/+20
| |/ / / / | | | | | | | | | | | | | | | `binds` is an array of a query attribute since Active Record 5.0.
* / / / / Add `exists?` and `update_all` to `CollectionProxy` for respects an ↵Ryuta Kamizono2016-07-201-5/+1
|/ / / / | | | | | | | | | | | | | | | | | | | | association scope Fixes #25732.
* | | | Merge pull request #25578 from ↵Rafael França2016-07-205-17/+30
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | kamipo/move_warning_about_composite_primary_key_to_attribute_methods_primary_key Move the warning about composite primary key to `AttributeMethods::PrimaryKey`
| * | | | Move the warning about composite primary key to `AttributeMethods::PrimaryKey`Ryuta Kamizono2016-07-025-17/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Actually schema dumper/creation supports composite primary key (#21614). Therefore it should not show the warning about composite primary key in connection adapter. This change moves the warning to `AttributeMethods::PrimaryKey` and suppress the warning for habtm join table. Fixes #25388.
* | | | | Merge pull request #25889 from kamipo/do_not_dup_binds_in_to_sqlRafael França2016-07-201-1/+1
|\ \ \ \ \ | | | | | | | | | | | | Do not `binds.dup` in `connection#to_sql`
| * | | | | Do not `binds.dup` in `connection#to_sql`Ryuta Kamizono2016-07-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Because `connection#to_sql` does not mutate `binds`.
* | | | | | Merge pull request #25888 from kamipo/use_conn_to_sql_for_construct_sqlRafael França2016-07-201-10/+5
|\ \ \ \ \ \ | | | | | | | | | | | | | | Use `connection#to_sql` for construct an SQL
| * | | | | | Use `connection#to_sql` for construct an SQLRyuta Kamizono2016-07-191-10/+5
| |/ / / / /
* | | | | | Merge pull request #25849 from suginoy/fix_merge_in_scopeRafael Mendonça França2016-07-201-1/+1
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | Fix the calling `merge` method at first in a scope
| * | | | | | Fix the calling `merge` method at first in a scopesuginoy2016-07-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Changing the order of method chaining `merge` and other query method such as `joins` should produce the same result. ```ruby class Topic < ApplicationRecord scope :safe_chaininig, -> { joins(:comments).merge(Comment.newest) } scope :unsafe_chaininig, -> { merge(Comment.newest).joins(:comments) } #=> NoMethodError end ```