method
build_relation
v4.0.2 -
Show latest stable
- Class:
ActiveRecord::Validations::UniquenessValidator
build_relation(klass, table, attribute, value)protected
No documentation available.
# File activerecord/lib/active_record/validations/uniqueness.rb, line 53
def build_relation(klass, table, attribute, value) #:nodoc:
if reflection = klass.reflect_on_association(attribute)
attribute = reflection.foreign_key
value = value.attributes[reflection.primary_key_column.name]
end
column = klass.columns_hash[attribute.to_s]
value = klass.connection.type_cast(value, column)
value = value.to_s[0, column.limit] if value && column.limit && column.text?
if !options[:case_sensitive] && value && column.text?
# will use SQL LOWER function before comparison, unless it detects a case insensitive collation
klass.connection.case_insensitive_comparison(table, attribute, column, value)
else
value = klass.connection.case_sensitive_modifier(value) unless value.nil?
table[attribute].eq(value)
end
end