Active Model Decimal 类型
用于十进制的高精度浮点数数值表示的属性类型。它在 :decimal
键下注册。
class BagOfCoffee
include ActiveModel::Attributes
attribute :weight, :decimal
end
Numeric
实例被转换为 BigDecimal
实例。任何其他对象都使用它们的 to_d
方法进行强制类型转换,除了空白字符串,它们被强制类型转换为 nil
。如果未定义 to_d
方法,则该对象使用 to_s
转换为字符串,然后使用 to_d
进行强制类型转换。
bag = BagOfCoffee.new
bag.weight = 0.01
bag.weight # => 0.1e-1
bag.weight = "0.01"
bag.weight # => 0.1e-1
bag.weight = ""
bag.weight # => nil
bag.weight = :arbitrary
bag.weight # => nil (the result of `.to_s.to_d`)
Decimal
精度默认为 18,可以在声明属性时自定义
class BagOfCoffee
include ActiveModel::Attributes
attribute :weight, :decimal, precision: 24
end
方法
包含的模块
常量
BIGDECIMAL_PRECISION | = | 18 |
实例公共方法
type() 链接
来源:显示 | 在 GitHub 上
# File activemodel/lib/active_model/type/decimal.rb, line 49 def type :decimal end
type_cast_for_schema(value) 链接
来源:显示 | 在 GitHub 上
# File activemodel/lib/active_model/type/decimal.rb, line 53 def type_cast_for_schema(value) value.to_s.inspect end