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 to Float::INFINITY.
"-Infinity" is cast to -Float::INFINITY.
"NaN" is cast to Float::NAN.
bag = BagOfCoffee.new
bag.weight = “0.25” bag.weight # => 0.25
bag.weight = “” bag.weight # => nil
bag.weight = “NaN” bag.weight # => Float::NAN
# File activemodel/lib/active_model/type/float.rb, line 39 def type :float end
# File activemodel/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
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.