diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2016-07-02 10:14:53 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2016-08-16 19:02:02 +0900 |
commit | 3a1f6fe7b4a70bf0698b0684dd48ac712c6883b6 (patch) | |
tree | 54ddcf0345c6b58d232e675b5c44137d7e85d1e4 /activerecord/lib/active_record/relation/predicate_builder | |
parent | c6900ce1bb3dc2daf7cd1ecfdeeb276f2e9645b5 (diff) | |
download | rails-3a1f6fe7b4a70bf0698b0684dd48ac712c6883b6.tar.gz rails-3a1f6fe7b4a70bf0698b0684dd48ac712c6883b6.tar.bz2 rails-3a1f6fe7b4a70bf0698b0684dd48ac712c6883b6.zip |
Extract `PredicateBuilder::CaseSensitiveHandler`
Currently uniqueness validator is coupled with building Arel ASTs.
This commit extracts `PredicateBuilder::CaseSensitiveHandler` for
decouple the building Arel ASTs.
Diffstat (limited to 'activerecord/lib/active_record/relation/predicate_builder')
-rw-r--r-- | activerecord/lib/active_record/relation/predicate_builder/case_sensitive_handler.rb | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/relation/predicate_builder/case_sensitive_handler.rb b/activerecord/lib/active_record/relation/predicate_builder/case_sensitive_handler.rb new file mode 100644 index 0000000000..acf0bbd829 --- /dev/null +++ b/activerecord/lib/active_record/relation/predicate_builder/case_sensitive_handler.rb @@ -0,0 +1,21 @@ +module ActiveRecord + class PredicateBuilder + class CaseSensitiveHandler # :nodoc: + def call(attribute, value) + value.call(attribute) + end + + class Value < Struct.new(:value, :table, :case_sensitive?) # :nodoc: + def call(attribute) + klass = table.send(:klass) + column = klass.column_for_attribute(attribute.name) + if case_sensitive? + klass.connection.case_sensitive_comparison(attribute, column, value) + else + klass.connection.case_insensitive_comparison(attribute, column, value) + end + end + end + end + end +end |