繁体   English   中英

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

[英]How can I add data-massaging code to a model attribute?

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

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

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

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

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

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


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

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

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

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

def funded
  funded_percent * 100
end

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

你可以使用.round

def funded
  ( funded_percent * 100 ).round
end

请尝试以下方法:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM