我有一个使用postgres的rails模型,有一个height_value列,设置为十进制。
我想存储没有尾随零的值,但我认为这对于十进制列类型是不可能的?
如果无法以这种方式存储它们,那么在我的模型中修剪尾随零以使它们始终正确显示的最佳方法是什么。我应该更改列,是否有精度可以达到我想要的效果?
所以如果是height_value:
28.5 => 28.5
28.0 => 28
19.75 => 19.75
19.00 => 19
模式
create_table "buildings", force: true do |t|
t.decimal "height_value"
end
答案 0 :(得分:3)
在模型中定义一个读取方法,如下所示。返回的值将是一个字符串
def height_value
"%g" % read_attribute(:height_value)
end
如果你想让方法返回一个数字,那么
def height_value
val = read_attribute(:height_value)
if val == val.to_i
val.to_i
else
val
end
end
存储的值将是十进制,但从数据库返回的值将满足要求