| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
|\ \
| | |
| | | |
Use splat `options` hash for `has_and_belongs_to_many`
|
| | |
| | |
| | |
| | | |
For simplicity.
|
|\ \ \
| | | |
| | | | |
Add `Type.default_value` and use it everywhere for internal
|
| |/ /
| | |
| | |
| | | |
For reduce instantiating `Type::Value`.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
|\ \ \
| | | |
| | | | |
Refactor remove duplication.
|
| | | | |
|
|\ \ \ \
| |/ / /
|/| | | |
Don't unnecessarily load a belongs_to when saving.
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
|\ \ \
| | | |
| | | | |
Switch back to `Hash.dup`
|
| | | |
| | | |
| | | |
| | | | |
Follow up to #26301.
|
|/ / /
| | |
| | |
| | | |
Rails dropped Ruby 1.9 support, but this comment still true.
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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
|
|\ \
| | |
| | | |
Remove over meta programming in AR::Relation
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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
|
| | |
| | |
| | |
| | |
| | | |
`format_string` is used for standardized column types/arguments spaces.
Now the standardization was removed at df84e9867219e9311aef6f4efd5dd9ec675bee5c.
|
|\ \ \
| | | |
| | | | |
Remove unnecessary `any?` and `many?` methods for collection proxy
|
| | | |
| | | |
| | | |
| | | | |
Simply use its own methods because `CollectionProxy` inherits `Relation`.
|
|\ \ \ \
| | | | |
| | | | | |
Doc on scoped has_many, dependent: :destroy
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Now the schema dumper by default doesn't align the types and arguments
in the ruby format anymore.
|
|/ / /
| | |
| | |
| | | |
Fixes #26137.
|
|\ \ \
| | | |
| | | | |
Remove unused `blob_or_text_column?` method
|
| | | | |
|
|\ \ \ \
| |/ / /
|/| | | |
Remove unnecessary `length` method for collection proxy
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
`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
|
|\ \ \ \
| | | | |
| | | | |
| | | | | |
Option not to line up column attributes in schema.rb
|
| | | | | |
|
|\ \ \ \ \
| |_|/ / /
|/| | | |
| | | | |
| | | | |
| | | | | |
kamipo/remove_text_default_treated_as_empty_string
Remove text default treated as an empty string in non-strict mode
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Revert "`sql_for_insert` returns values for passing to `exec_insert`"
|
| |/ / / /
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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.
|
|\ \ \ \ \
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
kamipo/remove_unnecessary_select_for_collection_proxy
Remove unnecessary `select` method for `CollectionProxy`
|
| | |/ / /
| |/| | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
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
|
|\ \ \ \ \
| |_|/ / /
|/| | | |
| | | | | |
Sqlite3 Migration Error Fixed (issue #26087)
|
| |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
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
|
|\ \ \ \
| | | | |
| | | | |
| | | | | |
Preserve readonly flag only for readonly association
|
| | | | |
| | | | |
| | | | |
| | | | | |
Fixes #24093
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Remove unnecessary ordinal methods for collection association
|
| | |/ / /
| |/| | |
| | | | |
| | | | |
| | | | | |
Currently `CollectionProxy` inherits `Relation` therefore we can use
its own methods rather than delegating to collection association.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Remove `sanitize_conditions` and use `sanitize_sql` instead of `sanitize_conditions`
|
| |/ / / /
| | | | |
| | | | |
| | | | | |
Because `sanitize_conditions` protected method is only used in one place.
|
|/ / / /
| | | |
| | | |
| | | |
| | | | |
Because `sql_for_insert` is only called in `use_insert_returning?` is
true since #26002.
|
|\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
kamipo/fix_error_message_for_out_of_range_integer_value
Fix error message for out of range byte size integer value for consistency
|
| | | | |
| | | | |
| | | | |
| | | | | |
Related f27a932, #25391.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
`pluck` should use `records` (`load_target`) when `loaded?` is true
|
| | | | | | |
|
| | | | | | |
|
|\ \ \ \ \ \
| | | | | | |
| | | | | | |
| | | | | | | |
Fix does_not_support_reverse? to find sql functions with commas in nested brackets
|