def validates_uniqueness_of(*attr_names)
configuration = { :message => ActiveRecord::Errors.default_error_messages[:taken] }
configuration.update(attr_names.pop) if attr_names.last.is_a?(Hash)
validates_each(attr_names,configuration) do |record, attr_name, value|
condition_sql = "#{attr_name} #{attribute_condition(value)}"
condition_params = [value]
if scope = configuration[:scope]
scope_value = record.send(scope)
condition_sql << " AND #{scope} #{attribute_condition(scope_value)}"
condition_params << scope_value
end
unless record.new_record?
condition_sql << " AND #{record.class.primary_key} <> ?"
condition_params << record.send(:id)
end
if record.class.find(:first, :conditions => [condition_sql, *condition_params])
record.errors.add(attr_name, configuration[:message])
end
end
end