代码之家  ›  专栏  ›  技术社区  ›  heroxav

Rails:在数据库中存储BigDecimal

  •  0
  • heroxav  · 技术社区  · 7 年前


    我突然想到:

    t.decimal :value, precision: 1000, scale: 30
    

    这看起来不是解决这个问题的好方法。1、仍然会影响准确性。它正在变得不必要的大。


    是否有存储对象的方法,例如: #<BigDecimal:586a238,'0.563E0',9(36)> 到数据库(在 text 列),然后将其重新初始化为BigDecimal?

    2 回复  |  直到 7 年前
        1
  •  1
  •   spickermann    7 年前

    你可能想调查一下 composed_of .

    但我更喜欢使用自定义getter和setter方法,因为我觉得它们更容易阅读和理解。

    示例:假设您的属性被命名为 foo BigDecimal 在应用程序中,但将值作为字符串存储在数据库中:

    def foo
      BigDecimal.new(read_attribute(:foo))
    end
    
    def foo=(foo)
      write_attribute(:foo, foo.to_s)
    end
    
        2
  •  1
  •   David Aldridge    7 年前