Fix type casting to Decimal from Float with large precision

When I define large precision column at RDBMS,
I assign float value, raises ArgumentError (precision too large).

Cause of this probrem:
- `precision` is derived from database column definition.
- If `precision` is larger than `Float::DIG + 1`, `BigDecimal.new` raises ArgumentError

I think it is inconvenient.

this commit fixes it.
Never mind I just realized how stupid that is. Let's at least pull this out to a method. My preference would still be for an if statement, but I don't feel super strongly about it.