class ActiveModel::Type::Float
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
Public Instance Methods
type()
click to toggle source
# File lib/active_model/type/float.rb, line 39 def type :float end
type_cast_for_schema(value)
click to toggle source
Calls superclass method
# 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
Private Instance Methods
cast_value(value)
click to toggle source
# File lib/active_model/type/float.rb, line 53 def cast_value(value) case value when ::Float then value when "Infinity" then ::Float::INFINITY when "-Infinity" then -::Float::INFINITY when "NaN" then ::Float::NAN else value.to_f end end