| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| | |
Add test cases about MySQL ORDER BY FIELD()
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Add assertions to MySQL `ORDER BY FIELD()` with empty data.
These tests examine to sanitize `ORDER BY FIELD()` with empty data
appropriately.
```ruby
Tag.order(['field(id, ?)', []]).to_sql
# => SELECT "tags".* FROM "tags" ORDER BY field(id, NULL)
Tag.order(['field(id, ?)', nil]).to_sql
# => SELECT "tags".* FROM "tags" ORDER BY field(id, NULL)
```
|
|\ \
| | |
| | | |
Remove `alias exec_without_stmt exec_query`
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This alias was for compatibility with legacy mysql adapter.
But the return value of both methods is already inconsistent.
`exec_query` returns `ActiveRecord::Result` instance.
But `exec_without_stmt` returns `[result_set, affected_rows]`
https://github.com/rails/rails/blob/v4.2.5.1/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb#L335-L364
Legacy mysql adapter was already removed in Rails 5.0.
I think we can remove this inconsistent alias.
|
|\ \
| | |
| | | |
Reduce `attribute.to_s`
|
| | | |
|
|/ / |
|
|\ \
| | |
| | |
| | | |
Mutating the result of Relation#to_a should not affect the relation
|
| | |
| | |
| | |
| | |
| | |
| | | |
Clarifying this separation and enforcing relation immutability is the
culmination of the previous efforts to remove the mutator method
delegations.
|
|\ \ \
| | | |
| | | | |
fix typo
|
| | | | |
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Fixes #23645
When you're using an `attr_accessor` for a record instead of an
attribute in the database there's no way for the record to know if it
has `changed?` unless you tell it `attribute_will_change!("attribute")`.
The change made in 27aa4dd updated validations to check if a record was
`changed?` or `marked_for_destruction?` or not `persisted?`. It did not
take into account virtual attributes that do not affect the model's
dirty status.
The only way to fix this is to always validate the record if the
attribute does not belong to the set of attributes the record expects
(in `record.attributes`) because virtual attributes will not be in that
hash.
I think we should consider deprecating this particular behavior in the
future and requiring that the user mark the record dirty by noting that
the virtual attribute will change. Unfortunately this isn't easy because
we have no way of knowing that you did the "right thing" in your
application by marking it dirty and will get the deprecation warning
even if you are doing the correct thing.
For now this restores expected behavior when using a virtual attribute
by always validating the record, as well as adds tests for this case.
I was going to add the `!record.attributes.include?(attribute)` to the
`should_validate?` method but `uniqueness` cannot validate a virtual
attribute with nothing to hold on to the attribute. Because of this
`should_validate?` was about to become a very messy method so I decided
to split them up so we can handle it specifically for each case.
|
|/ /
| |
| |
| |
| |
| |
| |
| | |
habtm join tables commonly have two id columns and it's OK to make those
two id columns a primary key. This commit eliminates the warnings for
join tables that have this setup.
ManageIQ/manageiq#6713
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Delegation of some `Array` methods was removed in commit 9d79334. That
change did add explicit delegation of a few methods that `Array` has but
which aren't on `Enumerable`. However, a few non-mutation methods were
omitted. This adds `Array` delegation of `#in_groups`, `#in_groups_of`,
`#shuffle` and `#split`. This allows things like
`MyThing.all.in_groups_of(3) { ... }` to continue working as they did
before commit 9d79334.
|
|\ \
| |/
|/| |
Remove unused require
|
| |
| |
| |
| |
| | |
`require 'active_support/core_ext/benchmark'` was added by 4ecdf24.
But currently unused anymore.
|
|\ \
| | |
| | | |
Add accidentally removed `#` [ci skip]
|
| | |
| | |
| | |
| | |
| | | |
`#` was removed at f57092a but this `#` is intentional.
e.g. https://github.com/rails/rails/blame/v5.0.0.beta2/activerecord/CHANGELOG.md#L1423-L1426
|
|\ \ \
| |/ /
|/| |
| | |
| | | |
kamipo/remove_needless_case_insensitive_comparison_in_mysql2_adapter
Remove needless `case_insensitive_comparison` in mysql2 adapter
|
| | |
| | |
| | |
| | | |
Simply it is sufficient to override `can_perform_case_insensitive_comparison_for?`.
|
| | |
| | |
| | | |
This was showing up as an H1. Fixing the indentation here fixes the codeblock.
|
| | | |
|
|\ \ \
| | | |
| | | |
| | | |
| | | | |
phuibonhoa/phuibonhoa/polymorphic_where_multiple_types
Fixed `where` for polymorphic associations when passed an array containing different types.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
different types.
When passing in an array of different types of objects to `where`, it would only take into account the class of the first object in the array.
PriceEstimate.where(estimate_of: [Treasure.find(1), Car.find(2)])
# => SELECT "price_estimates".* FROM "price_estimates"
WHERE ("price_estimates"."estimate_of_type" = 'Treasure' AND "price_estimates"."estimate_of_id" IN (1, 2))
This is fixed to properly look for any records matching both type and id:
PriceEstimate.where(estimate_of: [Treasure.find(1), Car.find(2)])
# => SELECT "price_estimates".* FROM "price_estimates"
WHERE (("price_estimates"."estimate_of_type" = 'Treasure' AND "price_estimates"."estimate_of_id" = 1)
OR ("price_estimates"."estimate_of_type" = 'Car' AND "price_estimates"."estimate_of_id" = 2))
|
|\ \ \ \
| |_|/ /
|/| | | |
Addresses #23568, Incorrect error message with accepts_nested_attributes_for / has_many & has_one
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
- Corrects an incorrect exception message when using accepts_nested_attributes_for
- Removes rescue/reraise behavior introduced in #19077
- Adds has_many & has_one, nested_attributes test case specifying the message that
should be conveyed with an exception raised because one of the nested attributes provided is unknown
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
AR::Relation#or
- Previously it used to show error message
<"undefined method `limit_value' for {:title=>\"Rails\"}:Hash">
- Now it shows following error message.
>> Post.where.not(name: 'DHH').or(name: 'Tenderlove')
ArgumentError: You have passed Hash object to #or. Pass an ActiveRecord::Relation object instead.
- Fixes #23714.
|
| | | |
| | | |
| | | |
| | | | |
- The change was added in #23099
|
| |/ /
|/| |
| | |
| | | |
Saw the `merge!` and had to prove to myself that the parent model's local_stored_attributes was not being changed when stored_attributes is called on a child model. Proved to be working as expected but this test is probably still useful to keep around.
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Let t.foreign_key use the same `to_table` twice
Conflicts:
activerecord/CHANGELOG.md
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Previously if you used `t.foreign_key` twice within the same
`create_table` block using the same `to_table`, all statements except
the final one would fail silently. For example, the following code:
def change
create_table :flights do |t|
t.integer :from_id, index: true, null: false
t.integer :to_id, index: true, null: false
t.foreign_key :airports, column: :from_id
t.foreign_key :airports, column: :to_id
end
end
Would only create one foreign key, on the column `from_id`.
This commit allows multiple foreign keys to the same table to be created
within one `create_table` block.
|
|\ \ \ \
| |/ / /
|/| | |
| | | | |
Add missing CHANGELOG for regression fix in #18155 which fixes #13387
|
|/ / /
| | |
| | |
| | | |
[ci skip]
|
| | | |
|
|\ \ \
| | | |
| | | | |
Fix AR::Relation#last bugs instroduced in 7705fc
|
| | | |
| | | |
| | | |
| | | | |
instead of loading the relation into memory
|
| | | | |
|
|/ / /
| | |
| | |
| | | |
The author name was lost in the merge commit 6fedc7d.
|
| | |
| | |
| | | |
since starting with Rails 5.x(beta) we prefer to use rails as the replacement of rake commands, may be change log will be the same
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | | |
Allow `joins` to be unscoped
Fixes #13775
|
| | | | |
|
|\ \ \ \
| | | | |
| | | | | |
UniquenessValidator exclude itself when PK changed
|
| | |/ /
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | | |
When changing the PK for a record which has a uniqueness validation on
some other attribute, Active Record should exclude itself from the
validation based on the PK value stored on the DB (id_was) instead of
its new value (id).
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
In Rails 5, we're much more restrictive about when we do or don't cache
a prepared statement. In particular, we never cache when we are sending
an IN statement or a SQL string literal
However, in the case of Adequate Record, we are *always* sending a raw
SQL string, and we *always* want to cache the result.
Fixes #23507
/cc @tgxworld
|
|\ \ \ \
| | | | |
| | | | | |
remove warnings from FinderMethods
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This removes the following warnings.
```
activerecord/lib/active_record/relation/finder_methods.rb:252: warning: ambiguous first argument; put parentheses or a space even after `-' operator
activerecord/lib/active_record/relation/finder_methods.rb:258: warning: ambiguous first argument; put parentheses or a space even after `-' operator
activerecord/lib/active_record/relation/finder_methods.rb:268: warning: ambiguous first argument; put parentheses or a space even after `-' operator
activerecord/lib/active_record/relation/finder_methods.rb:274: warning: ambiguous first argument; put parentheses or a space even after `-' operator
```
|
|\ \ \ \ \
| |/ / / /
|/| | | | |
Remove unused ReaderMethodCache and WriterMethodCache constants from ActiveRecord
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This commit walks the reflection tree and builds the scope chain
functionally. It also removes the chain cache since the cache doesn't
seem to have any impact on performance (I'd prefer to only cache at
proven bottlenecks)
|