如何将数据按摩代码添加到模型属性?

时间:2013-07-02 22:34:00

标签: ruby-on-rails ruby

我正在使用遗留数据库,其中某个百分比值存储在DECIMAL列中,但用户输入并读取整数数据。

所以,让我们说数据库包含......

contracts
---------
funded_percent DECIMAL 10,5

我想在该表的ActiveRecord模型中添加“getter”和“setter”,在读取时将其乘以100,并在保存时除以100。

动机是这样的,在我的视图代码中,我只处理整数。

我不确定这样做的正确方法。


哦,有些值超过了小数点后三位。

因此,该方法需要将存储的值“0.036”舍入到显示值“4%”。

3 个答案:

答案 0 :(得分:1)

这里你将属性称为“资助”来处理整数

def funded=(other)
  self.funded_percent = other / 100
end

def funded
  funded_percent * 100
end

答案 1 :(得分:1)

  

“0.036”到显示值“4%”。

您可以将.round用于此

def funded
  ( funded_percent * 100 ).round
end

答案 2 :(得分:0)

请尝试以下方法:

def funded_percent=(value)
  write_attribute :funded_percent, value/100 if value.present?
end

def funded_percent
  (read_attribute :funded_percent) * 100
end

然后在您的视图中,您可以使用funded_percent.ceil