aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
Commit message (Collapse)AuthorAgeFilesLines
* fixes remaining RuboCop issues [Vipul A M, Xavier Noria]Xavier Noria2016-09-018-14/+14
|
* Include user defined attributes in inspectSean Griffin2016-08-312-1/+7
| | | | The fact that this only includes column names is an oversight.
* Remove deprecated handling of PG PointsSean Griffin2016-08-316-56/+32
| | | | | | | | | | There are some minor changes to the point type as I had forgotten that this will affect the behavior of `t.point` in migrations and the schema dumper so we need to handle those as well. I'll say this again so I can convince myself to come up with a better structure... TYPES SHOULD NOT CARE ABOUT SCHEMA DUMPING AND WE NEED TO BETTER SEPARATE THESE.
* Revert "Extract `PredicateBuilder::CaseSensitiveHandler`"Sean Griffin2016-08-316-51/+51
| | | | | | | | | This reverts commit 3a1f6fe7b4a70bf0698b0684dd48ac712c6883b6. This commit takes the code in a direction that I am looking to avoid. The predicate builder should be purely concerned with AST construction as it matters to methods like `where`. Things like case sensitivity should continue to be handled elsewhere.
* Attempt to maintain encoding for arrays of strings with PGSean Griffin2016-08-313-1/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | I still think that this is something that should be handled in the pg gem, but it's not going to end up happening there so we'll do it here instead. Once we bump to pg 0.19 we can pass the encoding to the `encode` method instead. This issue occurs because C has no concept of encoding (or strings, really). The bytes that we pass here when sending the value to the database will always be interpreted as whatever encoding the connection is currently configured to use. That means that roundtripping to the database will lose no information However, after assigning we round trip through our type system without hitting the database. The only way that we can do the "correct" thin here would be to actually give a reference to the connection to the array type and have it check the current value of the connection's encoding -- which I'm strongly opposed to. We could also pass in the encoding when it's constructed, but since that can change independently of the type I'm not a huge fan of that either. This feels like a reasonable middle ground, where if we have an array of strings we simply use the encoding of the string we're given. Fixes #26326.
* Override `respond_to_missing?` instead of `respond_to?` when possibleSean Griffin2016-08-313-3/+3
| | | | | | | | | | This was almost every case where we are overriding `respond_to?` in a way that mirrors a parallel implementation of `method_missing`. There is one remaining case in Active Model that should probably do the same thing, but had a sufficiently strange implementation that I want to investigate it separately. Fixes #26333.
* Merge pull request #26283 from kamipo/use_splat_hash_for_optionsSean Griffin2016-08-311-6/+1
|\ | | | | Use splat `options` hash for `has_and_belongs_to_many`
| * Use splat `options` hash for `has_and_belongs_to_many`Ryuta Kamizono2016-08-261-6/+1
| | | | | | | | For simplicity.
* | Merge pull request #26282 from kamipo/add_type_default_valueSean Griffin2016-08-319-15/+13
|\ \ | | | | | | Add `Type.default_value` and use it everywhere for internal
| * | Add `Type.default_value` and use it everywhere for internalRyuta Kamizono2016-08-269-15/+13
| |/ | | | | | | For reduce instantiating `Type::Value`.
* | Ensure that inverse associations are set before running callbacksSean Griffin2016-08-3114-24/+77
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a parent association was accessed in an `after_find` or `after_initialize` callback, it would always end up loading the association, and then immediately overwriting the association we just loaded. If this occurred in a way that the parent's `current_scope` was set to eager load the child, this would result in an infinite loop and eventually overflow the stack. For records that are created with `.new`, we have a mechanism to perform an action before the callbacks are run. I've introduced the same code path for records created with `instantiate`, and updated all code which sets inverse instances on newly loaded associations to use this block instead. Fixes #26320.
* | Merge pull request #26327 from mechanicles/remove-duplicationGuillermo Iguaran2016-08-301-2/+6
|\ \ | | | | | | Refactor remove duplication.
| * | Refactor remove duplication.Santosh Wadghule2016-08-311-2/+6
| | |
* | | Merge pull request #23498 from jcoleman/remove-unnecessary-belongs-to-loadMatthew Draper2016-08-313-1/+14
|\ \ \ | |/ / |/| | Don't unnecessarily load a belongs_to when saving.
| * | Don't unnecessarily load a belongs_to when saving.James Coleman2016-08-263-1/+14
| | | | | | | | | | | | | | | | | | | | | | | | Previously, if the the association was previously loaded and then the foreign key changed by itself, a #save call would trigger a load of the new associated record during autosave. This is unnecessary and the autosave code (in that case) didn't use the loaded record anyways.
* | | Merge pull request #26305 from kamipo/follow-up-to-26301Kasper Timm Hansen2016-08-281-3/+1
|\ \ \ | | | | | | | | Switch back to `Hash.dup`
| * | | Switch back to `Hash.dup`Ryuta Kamizono2016-08-281-3/+1
| | | | | | | | | | | | | | | | Follow up to #26301.
* | | | Remove "Under Ruby 1.9" [ci skip]Ryuta Kamizono2016-08-281-9/+9
|/ / / | | | | | | | | | Rails dropped Ruby 1.9 support, but this comment still true.
* / / Switch back to `Hash.dup`Jon Moss2016-08-271-4/+2
|/ / | | | | | | | | | | | | | | | | | | | | | | | | The performance difference between `Hash[]` and `Hash.dup` looks to have been narrowed by @tenderlove via this commit --> https://github.com/ruby/ruby/commit/b3803cc49ad382e23291d75ce57ffb2b74bb9577#diff-eff9999082c8ce7d8ba1fc1d79f439cf. Since this commit first appeared in Ruby 2.0.0, and since Rails now requires a minimum Ruby version of 2.2.2, this performance boost should be available for all users. Relevant links: - This behavior was originally added via https://github.com/rails/rails/commit/02174a3efc6fa8f2e5e6f114e4cf0d8a06305b6a - The conversation on the Ruby issue tracker lives here --> https://bugs.ruby-lang.org/issues/7166
* / Fix "warning: assigned but unused variable - task"Ryuta Kamizono2016-08-261-1/+1
|/
* Test that AR query cache isn't busted when types are not same objectJames Coleman2016-08-241-0/+20
| | | | | | | | | | This is fixed in 5.0 as an ancillary part of 574f255629a45cd67babcfb9bb8e163e091a53b8 but here I also add a test for the condition. I'd previously backported the fix (and added a test) in the below commit; this brings the fix back up to master. (cherry picked from commit fce3dbf30241f2a65c777e192a7171b0eea81453)
* Merge pull request #26182 from bogdan/remove-relation-metaprogrammingRafael França2016-08-234-94/+59
|\ | | | | Remove over meta programming in AR::Relation
| * Remove over meta programming in AR::RelationBogdan Gusiev2016-08-234-94/+59
| | | | | | | | | | | | | | | | | | | | Introduced low level methods #set_value and #get_value for setting query attributes: relation.set_value(:where, {id: 1}) relation.get_value(:includes) Used those internally when working with relation's attributes at the abstract level
* | Remove unnecessary `format_string`Ryuta Kamizono2016-08-231-15/+2
| | | | | | | | | | `format_string` is used for standardized column types/arguments spaces. Now the standardization was removed at df84e9867219e9311aef6f4efd5dd9ec675bee5c.
* | Merge pull request #26228 from kamipo/remove_unnecessary_any_and_manyRafael França2016-08-232-28/+12
|\ \ | | | | | | Remove unnecessary `any?` and `many?` methods for collection proxy
| * | Remove unnecessary `any?` and `many?` methods for collection proxyRyuta Kamizono2016-08-192-28/+12
| | | | | | | | | | | | Simply use its own methods because `CollectionProxy` inherits `Relation`.
* | | Merge pull request #26253 from kamipo/fix_ci_failureRafael França2016-08-231-2/+2
|\ \ \ | | | | | | | | Fix CI failure caused by df84e9867219e9311aef6f4efd5dd9ec675bee5c
| * | | Fix CI failure caused by df84e9867219e9311aef6f4efd5dd9ec675bee5cRyuta Kamizono2016-08-231-2/+2
| | | |
* | | | Merge pull request #26231 from philipqnguyen/scoped-dependent-destroyJon Moss2016-08-221-0/+6
|\ \ \ \ | |/ / / |/| | | Doc on scoped has_many, dependent: :destroy
| * | | Doc on scoped has_many, dependent: :destroyPhilip Nguyen2016-08-221-0/+6
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | This is to close #26111 Developers need to be aware that `dependent: :destroy` on a scoped `has_many` association would only destroy the associated objects in that scope. Potentially leaving other associated objects outside that scope untouched.
* | | Remove the SchemaDumper options and change the default behaviorRafael Mendonça França2016-08-223-134/+16
| | | | | | | | | | | | | | | Now the schema dumper by default doesn't align the types and arguments in the ruby format anymore.
* | | Fix `OID::Bit#cast_value`Ryuta Kamizono2016-08-202-4/+5
|/ / | | | | | | Fixes #26137.
* | Merge pull request #26219 from kamipo/remove_unused_blob_or_text_columnRafael França2016-08-192-9/+0
|\ \ | | | | | | Remove unused `blob_or_text_column?` method
| * | Remove unused `blob_or_text_column?` methodRyuta Kamizono2016-08-192-9/+0
| | |
* | | Merge pull request #26218 from kamipo/remove_unnecessary_lengthRafael França2016-08-192-12/+6
|\ \ \ | |/ / |/| | Remove unnecessary `length` method for collection proxy
| * | Remove unnecessary `length` method for collection proxyRyuta Kamizono2016-08-192-12/+6
| | | | | | | | | | | | | | | | | | | | | `length` is delegated to `records` (`load_target`) by `ActiveRecord::Delegation`. https://github.com/rails/rails/blob/v5.0.0/activerecord/lib/active_record/relation/delegation.rb#L38
* | | Merge pull request #25675 from TimPetricola/schema-no-standardized-column-widthsRafael Mendonça França2016-08-193-10/+122
|\ \ \ | | | | | | | | | | | | Option not to line up column attributes in schema.rb
| * | | Option not to line up column types and attributes in schema.rbTim Petricola2016-08-173-13/+125
| | | |
* | | | Add chengelog entry to #25976Rafael Mendonça França2016-08-191-0/+7
| | | | | | | | | | | | | | | | [Rafael Mendonça França + Robin Dupret]
* | | | Merge pull request #26154 from ↵Rafael Mendonça França2016-08-196-84/+70
|\ \ \ \ | |_|/ / |/| | | | | | | | | | | | | | | kamipo/remove_text_default_treated_as_empty_string Remove text default treated as an empty string in non-strict mode
| * | | Remove text default treated as an empty string in non-strict modeRyuta Kamizono2016-08-196-84/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Strict mode controls how MySQL handles invalid or missing values in data-change statements such as INSERT or UPDATE. If strict mode is not in effect, MySQL inserts adjusted values for invalid or missing values and produces warnings. ```ruby def test_mysql_not_null_defaults_non_strict using_strict(false) do with_mysql_not_null_table do |klass| record = klass.new assert_nil record.non_null_integer assert_nil record.non_null_string assert_nil record.non_null_text assert_nil record.non_null_blob record.save! record.reload assert_equal 0, record.non_null_integer assert_equal "", record.non_null_string assert_equal "", record.non_null_text assert_equal "", record.non_null_blob end end end ``` It is inconsistent with other types that only text/blob defaults treated as an empty string. This commit fixes the inconsistency.
* | | | Merge pull request #26217 from kamipo/revert_23067Rafael França2016-08-191-1/+1
|\ \ \ \ | | | | | | | | | | Revert "`sql_for_insert` returns values for passing to `exec_insert`"
| * | | | Revert "`sql_for_insert` returns values for passing to `exec_insert`"Ryuta Kamizono2016-08-191-1/+1
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | This reverts #23067. #23067 is for propagating `pk` value from `sql_for_insert` to `exec_insert` (avoiding extra query for pg adapter). Now `exec_insert` includes `sql_for_insert` since #26002 therefore this propagating is no longer needed.
* | | | Merge pull request #25989 from ↵Rafael França2016-08-192-11/+6
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | kamipo/remove_unnecessary_select_for_collection_proxy Remove unnecessary `select` method for `CollectionProxy`
| * | | | Remove unnecessary `select` method for `CollectionProxy`Ryuta Kamizono2016-08-182-11/+6
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | Currently `CollectionProxy` inherits `Relation` and `Relation` includes `QueryMethods`. This method is completely duplicated. https://github.com/rails/rails/blob/v5.0.0/activerecord/lib/active_record/relation/query_methods.rb#L271-L275
* | | | Merge pull request #26089 from travisoneill/sqlite_rollback_fixRafael Mendonça França2016-08-194-5/+31
|\ \ \ \ | |_|/ / |/| | | | | | | Sqlite3 Migration Error Fixed (issue #26087)
| * | | Added nil case handling to allow rollback migration in case oftravis.h.oneill@gmail.com2016-08-174-5/+31
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | invalid column type /activerecord/lib/active_record/connection_adapters /abstract/schema_definitions.rb:306 type = type.to_sym Changed to the following to handle nil case: type = type.to_sym if type Added regression test for this case: /activerecord/test/cases/migration_test.rb:554 if current_adapter?(:SQLite3Adapter) def test_allows_sqlite3_rollback_on_invalid_column_type Person.connection.create_table :something, force: true do |t| t.column :number, :integer t.column :name, :string t.column :foo, :bar end assert Person.connection.column_exists?(:something, :foo) assert_nothing_raised { Person.connection.remove_column :something, :foo, :bar } assert !Person.connection.column_exists?(:something, :foo) assert Person.connection.column_exists?(:something, :name) assert Person.connection.column_exists?(:something, :number) ensure Person.connection.drop_table :something, if_exists: true end end
* | | Merge pull request #24099 from k0kubun/preserve-readonlyRafael Mendonça França2016-08-185-4/+31
|\ \ \ | | | | | | | | | | | | Preserve readonly flag only for readonly association
| * | | Preserve readonly flag only for readonly associationTakashi Kokubun2016-07-305-4/+29
| | | | | | | | | | | | | | | | Fixes #24093
* | | | Merge pull request #26200 from kamipo/remove_unnecessary_ordinal_methodsRafael França2016-08-183-93/+84
|\ \ \ \ | | | | | | | | | | Remove unnecessary ordinal methods for collection association