我们将Rails 3.2.18与activerecord-sqlserver-adapter gem一起使用。一切都很好,直到我们注意到十进制列被视为整数的问题。尽管列有十进制(18,2)类型集,但ActiveRecords将其视为十进制(18,0),并将属性视为整数。
> Model.columns_hash['decimal_attr'].sql_type
=> "decimal(18,0)"
> Model.columns_hash['decimal_attr'].type
=> :integer
有什么建议吗?我很乐意至少得到一个方向来挖掘它。
编辑:这是旧数据库中的现有表
答案 0 :(得分:1)
好吧,万一有人会偶然发现同样的问题,我想出了一个快速的黑客攻击。保存模型后,将以原始SQL的形式发出简单的UPDATE查询。这不能解决问题,但允许使用相同db的遗留应用程序获取十进制(18,2)值。以下是查询的代码:
value = ActiveRecord::Base.sanitize(@value)
query = "UPDATE [models] SET [attribute] = #{value} WHERE [models].[id] = #{@model.id}"
Property.connection.execute(query)