diff options
author | Sean Griffin <sean@seantheprogrammer.com> | 2016-08-31 12:38:37 -0400 |
---|---|---|
committer | Sean Griffin <sean@seantheprogrammer.com> | 2016-08-31 12:38:37 -0400 |
commit | 84efde740dc357de3ace08b2f2fd7a4a67dbd9bd (patch) | |
tree | c858f06849f59885cb736027d49f954de2ca59b4 /activerecord/lib/active_record/connection_adapters | |
parent | 7ba3a48df5bfdc5e98506bb829f937e03b55a5b3 (diff) | |
download | rails-84efde740dc357de3ace08b2f2fd7a4a67dbd9bd.tar.gz rails-84efde740dc357de3ace08b2f2fd7a4a67dbd9bd.tar.bz2 rails-84efde740dc357de3ace08b2f2fd7a4a67dbd9bd.zip |
Revert "Extract `PredicateBuilder::CaseSensitiveHandler`"
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.
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract_adapter.rb | 12 | ||||
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb | 7 |
2 files changed, 10 insertions, 9 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb index 4dde525ebc..0c7197a002 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb @@ -433,16 +433,16 @@ module ActiveRecord @connection end - def case_sensitive_comparison(attribute, column, value) # :nodoc: - attribute.eq(value) + def case_sensitive_comparison(table, attribute, column, value) + table[attribute].eq(Arel::Nodes::BindParam.new) end - def case_insensitive_comparison(attribute, column, value) # :nodoc: + def case_insensitive_comparison(table, attribute, column, value) if can_perform_case_insensitive_comparison_for?(column) - value = attribute.relation.lower(value) - attribute = attribute.lower + table[attribute].lower.eq(table.lower(Arel::Nodes::BindParam.new)) + else + table[attribute].eq(Arel::Nodes::BindParam.new) end - attribute.eq(value) end def can_perform_case_insensitive_comparison_for?(column) diff --git a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb index 3a28879c15..4333cd1f57 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb @@ -613,11 +613,12 @@ module ActiveRecord SQL end - def case_sensitive_comparison(attribute, column, value) # :nodoc: + def case_sensitive_comparison(table, attribute, column, value) if column.collation && !column.case_sensitive? - value = Arel::Nodes::Bin.new(value) + table[attribute].eq(Arel::Nodes::Bin.new(Arel::Nodes::BindParam.new)) + else + super end - attribute.eq(value) end def can_perform_case_insensitive_comparison_for?(column) |