Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Ticket #4723: remove_table_name_from_validates_uniqueness_of_to_fix_sqlserver.patch

File remove_table_name_from_validates_uniqueness_of_to_fix_sqlserver.patch, 1.7 kB (added by mixonic@synitech.com, 2 years ago)

Patch to remove table.column syntax from validates_uniqueness_of SQL

  • activerecord/lib/active_record/validations.rb

    old new  
    514514 
    515515        validates_each(attr_names,configuration) do |record, attr_name, value| 
    516516          if value.nil? || (configuration[:case_sensitive] || !columns_hash[attr_name.to_s].text?) 
    517             condition_sql = "#{record.class.table_name}.#{attr_name} #{attribute_condition(value)}" 
     517            condition_sql = "#{attr_name} #{attribute_condition(value)}" 
    518518            condition_params = [value] 
    519519          else 
    520             condition_sql = "UPPER(#{record.class.table_name}.#{attr_name}) #{attribute_condition(value)}" 
     520            condition_sql = "UPPER(#{attr_name}) #{attribute_condition(value)}" 
    521521            condition_params = [value.upcase] 
    522522          end 
    523523          if scope = configuration[:scope] 
    524524            Array(scope).map do |scope_item| 
    525525              scope_value = record.send(scope_item) 
    526               condition_sql << " AND #{record.class.table_name}.#{scope_item} #{attribute_condition(scope_value)}" 
     526              condition_sql << " AND #{scope_item} #{attribute_condition(scope_value)}" 
    527527              condition_params << scope_value 
    528528            end 
    529529          end 
    530530          unless record.new_record? 
    531             condition_sql << " AND #{record.class.table_name}.#{record.class.primary_key} <> ?" 
     531            condition_sql << " AND #{record.class.primary_key} <> ?" 
    532532            condition_params << record.send(:id) 
    533533          end 
    534534          if record.class.find(:first, :conditions => [condition_sql, *condition_params])