def quote_value(value)
return 'NULL' if value.nil?
case value
when Numeric then quote_numeric(value)
when String then quote_string(value)
when Class then quote_class(value)
when Time then quote_time(value)
when DateTime then quote_datetime(value)
when Date then quote_date(value)
when TrueClass, FalseClass then quote_boolean(value)
when Array then quote_array(value)
when Range then quote_range(value)
when Symbol then quote_symbol(value)
when Regexp then quote_regexp(value)
else
if value.respond_to?(:to_sql)
value.to_sql
else
raise "Don't know how to quote #{value.inspect}"
end
end
end