0

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

所以,假设数据库包括......

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

我想为该表的 ActiveRecord 模型添加一个“getter”和“setter”,读取时乘以 100,保存时除以 100。

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

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


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

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

4

3 回答 3

1

在这里,您将属性称为“已资助”以处理整数

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

def funded
  funded_percent * 100
end
于 2013-07-02T22:45:15.847 回答
1

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

你可以用.round这个

def funded
  ( funded_percent * 100 ).round
end
于 2013-07-03T05:49:42.913 回答
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

于 2013-07-02T23:20:13.520 回答