Class: ActiveModel::Type::Decimal
- Includes:
- Helpers::Numeric
- Defined in:
- lib/active_model/type/decimal.rb
Overview
Active Model Decimal Type
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, #initialize, #map, #mutable?, #serializable?, #serialize, #serialized?, #value_constructed_by_mass_assignment?
Methods included from SerializeCastValue
included, #initialize, #itself_if_serialize_cast_value_compatible, serialize
Constructor Details
This class inherits a constructor from ActiveModel::Type::Value
Instance Method Details
#type ⇒ Object
49 50 51 |
# File 'lib/active_model/type/decimal.rb', line 49 def type :decimal end |
#type_cast_for_schema(value) ⇒ Object
53 54 55 |
# File 'lib/active_model/type/decimal.rb', line 53 def type_cast_for_schema(value) value.to_s.inspect end |