aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* | 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-3112-24/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-311-1/+3
|\ \ \ \ | |/ / / |/| | | Don't unnecessarily load a belongs_to when saving.
| * | | Don't unnecessarily load a belongs_to when saving.James Coleman2016-08-261-1/+3
| |/ / | | | | | | | | | | | | | | | | | | | | | 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
* | Merge pull request #26182 from bogdan/remove-relation-metaprogrammingRafael França2016-08-233-93/+57
|\ \ | | | | | | Remove over meta programming in AR::Relation
| * | Remove over meta programming in AR::RelationBogdan Gusiev2016-08-233-93/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 #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-221-38/+3
| | | | | | | | | | | | | | | | | | | | 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-201-2/+2
|/ / / | | | | | | | | | Fixes #26137.
* | | Merge pull request #26219 from kamipo/remove_unused_blob_or_text_columnRafael França2016-08-191-4/+0
|\ \ \ | | | | | | | | Remove unused `blob_or_text_column?` method
| * | | Remove unused `blob_or_text_column?` methodRyuta Kamizono2016-08-191-4/+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-191-10/+38
|\ \ \ \ | | | | | | | | | | | | | | | Option not to line up column attributes in schema.rb
| * | | | Option not to line up column types and attributes in schema.rbTim Petricola2016-08-171-10/+38
| | | | |
* | | | | Merge pull request #26154 from ↵Rafael Mendonça França2016-08-193-24/+5
|\ \ \ \ \ | |_|/ / / |/| | | | | | | | | | | | | | | | | | | 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-193-24/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-192-2/+3
|\ \ \ \ \ | |_|/ / / |/| | | | | | | | | Sqlite3 Migration Error Fixed (issue #26087)
| * | | | Added nil case handling to allow rollback migration in case oftravis.h.oneill@gmail.com2016-08-172-2/+3
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-183-2/+10
|\ \ \ \ | | | | | | | | | | | | | | | Preserve readonly flag only for readonly association
| * | | | Preserve readonly flag only for readonly associationTakashi Kokubun2016-07-303-2/+8
| | | | | | | | | | | | | | | | | | | | 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
| * | | | | Remove unnecessary ordinal methods for collection associationRyuta Kamizono2016-08-183-93/+84
| | |/ / / | |/| | | | | | | | | | | | | | | | | | Currently `CollectionProxy` inherits `Relation` therefore we can use its own methods rather than delegating to collection association.
* | | | | Merge pull request #25999 from kamipo/remove_sanitize_conditionsRafael França2016-08-182-4/+4
|\ \ \ \ \ | | | | | | | | | | | | Remove `sanitize_conditions` and use `sanitize_sql` instead of `sanitize_conditions`
| * | | | | Deprecate `sanitize_conditions`. Use `sanitize_sql` insteadRyuta Kamizono2016-08-182-4/+4
| |/ / / / | | | | | | | | | | | | | | | Because `sanitize_conditions` protected method is only used in one place.
* / / / / Remove unnecessary `test_sql_for_insert_with_returning_disabled`Ryuta Kamizono2016-08-181-3/+2
|/ / / / | | | | | | | | | | | | | | | | Because `sql_for_insert` is only called in `use_insert_returning?` is true since #26002.
* | | | Merge pull request #25396 from ↵Rafael França2016-08-171-1/+1
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | kamipo/fix_error_message_for_out_of_range_integer_value Fix error message for out of range byte size integer value for consistency
| * | | | Fix error message for out of range byte size integer value for consistencyRyuta Kamizono2016-08-071-1/+1
| | | | | | | | | | | | | | | | | | | | Related f27a932, #25391.
* | | | | Merge pull request #25976 from kamipo/pluck_uses_loaded_targetRafael França2016-08-172-2/+13
|\ \ \ \ \ | | | | | | | | | | | | `pluck` should use `records` (`load_target`) when `loaded?` is true
| * | | | | `pluck` should use `records` (`load_target`) when `loaded?` is trueRyuta Kamizono2016-08-042-2/+13
| | | | | |
* | | | | | Fix indentationRafael Mendonça França2016-08-171-3/+3
| | | | | |
* | | | | | Merge pull request #25987 from aquajach/masterRafael Mendonça França2016-08-171-1/+1
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | Fix does_not_support_reverse? to find sql functions with commas in nested brackets