Extract types which don't require additional typecasting to a method

Database specific adapters shouldn't need to override `type_cast` to
define types which are already in an acceptable state.
This commit is contained in:
Sean Griffin 2014-05-26 14:28:18 -07:00
parent cfd9d1d3e1
commit 8163a50fdc

@ -53,16 +53,15 @@ def type_cast(value, column)
end
case value
when String, ActiveSupport::Multibyte::Chars
when Symbol, ActiveSupport::Multibyte::Chars
value.to_s
when true then unquoted_true
when false then unquoted_false
when nil then nil
# BigDecimals need to be put in a non-normalized form and quoted.
when BigDecimal then value.to_s('F')
when Numeric then value
when Date, Time then quoted_date(value)
when Symbol then value.to_s
when *types_which_need_no_typecasting
value
else
to_type = column ? " to #{column.type}" : ""
raise TypeError, "can't cast #{value.class}#{to_type}"
@ -124,6 +123,12 @@ def quoted_date(value)
value.to_s(:db)
end
private
def types_which_need_no_typecasting
[nil, Numeric, String]
end
end
end
end