postgres中的十进制列。有没有一种方法来存储值而不会尾随零

时间:2013-12-31 17:04:50

标签: ruby-on-rails ruby postgresql ruby-on-rails-4 decimal

我有一个使用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

1 个答案:

答案 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

存储的值将是十进制,但从数据库返回的值将满足要求