| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
The validator has access to richer type information
|
|
|
|
|
|
|
|
|
|
| |
This is no longer required now that we are injecting a type caster
object into the Arel table, with the exception of uniqueness
validations. Since it calls `ConnectionAdapter#type_cast`, the value has
already been cast for the database. We don't want Arel to attempt to
cast it further, so we need to continue wrapping it in a quoted node.
This can potentially go away when this validator is refactored to make
better use of `where` or the predicate builder.
|
|
|
|
|
|
|
| |
This code could use some much heavier refactoring. It looks like
`build_relation` duplicates most of the logic of `Relation#where` and
`PredicateBuilder` with regards to handling associations and attribute
aliases
|
|
|
|
|
|
|
| |
Part of the larger refactoring to remove type casting from Arel. Since
we've already cast the value a few lines above, we don't need to re-cast
it later. We can inform Arel of this by wrapping it in an
`Arel::Nodes::Quoted`, which will no longer be required in Rails 5.1
|
|
|
|
|
|
|
|
| |
I think we should deprecate this behavior and just error if you tell us
to do a case insensitive comparison for types which are not case
sensitive. Partially reverts 35592307
Fixes #18195
|
|
|
|
|
|
|
| |
We added a comparison to "id", and call to `self.class.primary_key` a
*lot*. We also have performance hits from `&block` all over the place.
We skip the check in a new method, in order to avoid breaking the
behavior of `read_attribute`
|
| |
|
|
|
|
|
|
|
| |
This was only used for uniqueness validations. The first usage was in
conjunction with `limit`. Types which cast to string, but are not
considered text cannot have a limit. The second case was only with an
explicit `:case_sensitive => true` option given by the user.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Nearly completely implemented in terms of custom properties.
`_before_type_cast` now stores the raw serialized string consistently,
which removes the need to keep track of "state". The following is now
consistently true:
- `model.serialized == model.reload.serialized`
- A model can be dumped and loaded infinitely without changing
- A model can be saved and reloaded infinitely without changing
|
|
|
|
|
|
|
|
|
| |
Fix habtm reflection
Conflicts:
activerecord/CHANGELOG.md
activerecord/lib/active_record/counter_cache.rb
activerecord/lib/active_record/reflection.rb
activerecord/test/cases/reflection_test.rb
|
|
|
|
|
|
|
|
| |
The original attempt didn't really fix the problem and wasn't testing the
problematic area. This commit corrected those issues in the original commit.
Also removed the private `enum_mapping_for` method. As `defined_enums` is now a
method, this method doesn't provide much value anymore.
|
|\
| |
| |
| |
| |
| |
| | |
Only use BINARY for mysql case sensitive uniqueness check when column has a case insensitive collation.
Conflicts:
activerecord/CHANGELOG.md
|
| |
| |
| |
| | |
case insensitive collation.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This fixes a bug where any enum attribute of a model
would be evaluated always as 0 when calling the
database on validations.
This fix converts the value of the enum attribute
to its integer value rather than the string before
building the relation as the bug occured when the
string finally gets converted to integer using
string.to_i which converts it to 0.
[Vilius Luneckas, Ahmed AbouElhamayed]
|
| | |
|
| | |
|
|/
|
|
|
|
|
|
| |
laurocaetano/fix-uniqueness-validation-for-aliased-attribute
Fix bug when validating the uniqueness of an aliased attribute.
Conflicts:
activerecord/CHANGELOG.md
|
| |
|
| |
|
|
|
|
| |
link d4e3f8ba826cd42aa3c242149
|
|
|
|
| |
their setup in their constructor now.
|
|
|
|
| |
Take the opportunity to showcase where.not.
|
|
|
|
|
| |
This is a follow up to #5321 and follows the general direction in
AR to make things lazy evaluated.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
It's not necessary to use this extension here, we are fine with Array#unshift.
|
|
|
|
|
| |
Cleanup some code, avoid extra hash with reverse_merge, and don't use
send for :id, since it's always present.
|
|
|
|
| |
Fixes: #8075.
|
|
|
|
| |
get scope_value only one time dependig on reflection
|
|
|
|
|
| |
reflection init as 'if' stantment.
column is always the same expression and depends from the changing of attributes
|
| |
|
| |
|
|
|
|
|
|
| |
Fixes issue with overrding ActiveRecord reader methods with a
composed object and using that attribute as the scope of a
validates_uniqueness_of validation.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
| |
#4321
|
|
|
| |
#4321
|
| |
|
|
|
|
|
|
|
| |
It breaks the build for mysql.
This reverts commit 958d25df4a1b0d41ce5deeeb0739c93b49bbd18d, reversing
changes made to 8f309e31057e1b26fefedb199ab0526126fb1fe4.
|
|\
| |
| | |
Remove more Array.wrap calls
|
| | |
|
| | |
|