Class: ActiveModel::Type::Float

Inherits:
Value show all
Includes:
Helpers::Numeric
Defined in:
activemodel/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 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

Instance Attribute Summary

Attributes inherited from Value

#limit, #precision, #scale

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

Methods included from ActiveSupport::Concern

#append_features, #class_methods, extended, #included, #prepend_features, #prepended

Constructor Details

This class inherits a constructor from ActiveModel::Type::Value

Instance Method Details

#typeObject



39
40
41
# File 'activemodel/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 '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