Class: ActiveModel::Type::Float
- Includes:
- Helpers::Numeric
- Defined in:
- lib/active_model/type/float.rb
Overview
Active Model Float Type
Attribute type for floating point numeric values. It is registered under the :float
key.
class BagOfCoffee
include ActiveModel::Attributes
attribute :weight, :float
end
Values are cast using their to_f
method, except for the following strings:
-
Blank strings are cast to
nil
. -
"Infinity"
is cast toFloat::INFINITY
. -
"-Infinity"
is cast to-Float::INFINITY
. -
"NaN"
is cast toFloat::NAN
.bag = BagOfCoffee.new
bag.weight = “0.25” bag.weight # => 0.25
bag.weight = “” bag.weight # => nil
bag.weight = “NaN” bag.weight # => Float::NAN
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
39 40 41 |
# File 'lib/active_model/type/float.rb', line 39 def type :float end |
#type_cast_for_schema(value) ⇒ Object
43 44 45 46 47 48 49 50 |
# File 'lib/active_model/type/float.rb', line 43 def type_cast_for_schema(value) return "::Float::NAN" if value.try(:nan?) case value when ::Float::INFINITY then "::Float::INFINITY" when -::Float::INFINITY then "-::Float::INFINITY" else super end end |