我有一个从 Active Record 返回的属性,它是一个大十进制。数据库列的数据是数字(18,0),我无权更改它。我希望能够将属性转换为没有小数精度的整数,但我没有任何运气。我知道我可以使用 big_decimal.to_i 将值转换为其他值,但是我希望有一种方法可以在 Active Record 模型中处理此问题(可能是 after_initialize),这样我就不必担心我的其他任何地方的转换代码。任何帮助将不胜感激,谢谢。
最佳答案
如果您坚持使用旧架构,您始终可以通过添加包装器方法来解决该问题:
class MyModel < ActiveRecord::Base
def int_column
value = read_attribute(:big_decimal)
# Preserve `nil` values and avoid converting to zero.
value and value.to_i
end
def int_column=(value)
write_attribute(:big_decimal, value)
end
end
这为您提供了一种使用备用名称从该列读取/写入的方法。
关于ruby - 我可以将事件记录中的属性从大十进制转换为整数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36704975/