如何围绕模型中的浮动圆,这样您就不必在其他地方将其环绕(它只是以圆形形式保存)

时间:2016-07-22 19:13:12

标签: ruby-on-rails ruby model floating-point rounding

我想知道是否有办法对模型中的数字进行舍入,这样我就不必将数字四舍五入到指定的小数位,除了那里。

我查看了这两篇文章,但都没有回答我的问题:

第一个是第二个假设的重复,但在我看来它不是。无论如何,他们都没有清楚地回答我的问题。

是否有可能在模型中对浮点数进行一次舍入?

2 个答案:

答案 0 :(得分:0)

我认为最好的方法是覆盖setter。 (在你的情况下,但一般来说,如果你必须存储圆形浮点数,我会使用整数。)

class Xyz < ActiveRecord::Base
  def my_float=(value)
    if value.is_a? Float
      super(value.round)
    else
      super
    end
  end
end

答案 1 :(得分:0)

仅以货币为例!

  • 使用钩子(:before_save)
  • 在:round_decimals内部写下尽可能多的属性。
# models/Currency.rb
class Currency < ApplicationRecord
  before_save :round_decimals

  private

  def round_decimals
    self.spot_rate = self.spot_rate.round(2)
  end
end