aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/validations/uniqueness.rb
diff options
context:
space:
mode:
authorSean Griffin <sean@thoughtbot.com>2015-02-07 17:23:30 -0700
committerSean Griffin <sean@thoughtbot.com>2015-02-07 17:23:30 -0700
commit16629c099ca30895c90661d5cbce40e218f0984e (patch)
treedcb8195749f9f6181e0b04fe2848474b6e14b47c /activerecord/lib/active_record/validations/uniqueness.rb
parentc4ef73affdc67efb02ca369326aaaaab3fd94d21 (diff)
downloadrails-16629c099ca30895c90661d5cbce40e218f0984e.tar.gz
rails-16629c099ca30895c90661d5cbce40e218f0984e.tar.bz2
rails-16629c099ca30895c90661d5cbce40e218f0984e.zip
rm `Type#text?`
This predicate was only to figure out if it's safe to do case insensitive comparison, which is only a problem on PG. Turns out, PG can just tell us whether we are able to do it or not. If the query turns out to be a problem, let's just replace that method with checking the SQL type for `text` or `character`. I'd rather not burden the type objects with adapter specific knowledge. The *real* solution, is to deprecate this behavior entirely. The only reason we need it is because the `:case_sensitive` option for `validates_uniqueness_of` is documented as "this option is ignored for non-strings". It makes no sense for us to do that. If the type can't be compared in a case insensitive way, the user shouldn't tell us to do case insensitive comparison.
Diffstat (limited to 'activerecord/lib/active_record/validations/uniqueness.rb')
-rw-r--r--activerecord/lib/active_record/validations/uniqueness.rb2
1 files changed, 1 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/validations/uniqueness.rb b/activerecord/lib/active_record/validations/uniqueness.rb
index ad56f637e3..a766d77e88 100644
--- a/activerecord/lib/active_record/validations/uniqueness.rb
+++ b/activerecord/lib/active_record/validations/uniqueness.rb
@@ -69,7 +69,7 @@ module ActiveRecord
value = Arel::Nodes::Quoted.new(value)
- comparison = if !options[:case_sensitive] && value && cast_type.text?
+ comparison = if !options[:case_sensitive] && !value.nil?
# will use SQL LOWER function before comparison, unless it detects a case insensitive collation
klass.connection.case_insensitive_comparison(table, attribute, column, value)
else