ruby - 我可以将事件记录中的属性从大十进制转换为整数吗?

标签 ruby activerecord rails-activerecord

我有一个从 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/

相关文章:

Ruby 数组映射并加入一个循环

ruby-on-rails - Rails 验证用户名中没有空格

ruby-on-rails - 使用关联的 Rails 模型创建 gem

ruby-on-rails - 使用 Activerecord 对多列求和

ruby-on-rails - 如果存在,则 ActiveRecord 验证 url

ruby-on-rails - 如何在 Rails 应用程序中实现模块化?

ruby - 如何扫描文本文件中的字符串,并在字符串不存在时运行代码?

ruby-on-rails - 如何计算在 ROR 的特定字段中具有唯一值的记录数?

ruby-on-rails - 如何让 Rails 为这次迭代执行正确的单个 SQL 连接查询?

ruby-on-rails - 按 Rails 中的嵌套关​​联进行分组和计数