Class: ActiveModel::Type::Decimal
- Includes:
- Helpers::Numeric
- Defined in:
- activemodel/lib/active_model/type/decimal.rb
Overview
Attribute type for decimal, high-precision floating point numeric representation. It is registered under the :decimal
key.
class BagOfCoffee
include ActiveModel::Attributes
attribute :weight, :decimal
end
Numeric instances are converted to BigDecimal instances. Any other objects are cast using their to_d
method, except for blank strings, which are cast to nil
. If a to_d
method is not defined, the object is converted to a string using to_s
, which is then cast using 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 precision defaults to 18, and can be customized when declaring an attribute:
class BagOfCoffee
include ActiveModel::Attributes
attribute :weight, :decimal, precision: 24
end
Constant Summary collapse
- BIGDECIMAL_PRECISION =
18
Instance Attribute Summary
Attributes inherited from Value
Instance Method Summary collapse
Methods included from Helpers::Numeric
#cast, #changed?, #serialize, #serialize_cast_value
Methods inherited from Value
#==, #as_json, #assert_valid_value, #binary?, #cast, #changed?, #changed_in_place?, #deserialize, #force_equality?, #hash, #immutable_value, #initialize, #map, #serializable?, #serialize, #value_constructed_by_mass_assignment?
Constructor Details
This class inherits a constructor from ActiveModel::Type::Value