123456789_123456789_123456789_123456789_123456789_

Class: ActiveRecord::Normalization::NormalizedValueType

Do not use. This class is for internal use only.
Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
Instance Chain:
Inherits: ActiveModel::Type::Value
Defined in: activerecord/lib/active_record/normalization.rb

Class Method Summary

::ActiveModel::Type::Value - Inherited

.new

Initializes a type with three basic configuration settings: precision, limit, and scale.

Instance Attribute Summary

::ActiveModel::Type::Value - Inherited

#limit, #precision, #scale,
#binary?

These predicates are not documented, as I need to look further into their use, and see if they can be removed entirely.

#mutable?, #serialized?

Instance Method Summary

::ActiveModel::Type::Value - Inherited

#==, #as_json, #assert_valid_value,
#cast

::ActiveRecord::Type casts a value from user input (e.g. from a setter).

#changed?

Determines whether a value has changed for dirty checking.

#changed_in_place?

Determines whether the mutable value has been modified since it was read.

#deserialize

Converts a value from database input to the appropriate ruby type.

#eql?
#hash,
#serializable?

Returns true if this type can convert value to a type that is usable by the database.

#serialize

Casts a value from the ruby type to a type that the database knows how to understand.

#type

Returns the unique type name as a ::Symbol.

#cast_value

Convenience method for types which do not need separate type casting behavior for user and database inputs.

#force_equality?, #map,
#type_cast_for_schema

::ActiveRecord::Type casts a value for schema dumping.

#value_constructed_by_mass_assignment?

::ActiveModel::Type::SerializeCastValue - Included

Constructor Details

.new(cast_type:, normalizer:, normalize_nil:) ⇒ NormalizedValueType

[ GitHub ]

  
# File 'activerecord/lib/active_record/normalization.rb', line 126

def initialize(cast_type:, normalizer:, normalize_nil:)
  @cast_type = cast_type
  @normalizer = normalizer
  @normalize_nil = normalize_nil
  super(cast_type)
end

Instance Attribute Details

#cast_type (readonly)

[ GitHub ]

  
# File 'activerecord/lib/active_record/normalization.rb', line 123

attr_reader :cast_type, :normalizer, :normalize_nil

#normalize_nil? (readonly)

Alias for #normalize_nil.

[ GitHub ]

  
# File 'activerecord/lib/active_record/normalization.rb', line 124

alias :normalize_nil? :normalize_nil

#normalizer (readonly)

[ GitHub ]

  
# File 'activerecord/lib/active_record/normalization.rb', line 123

attr_reader :cast_type, :normalizer, :normalize_nil

Instance Method Details

#==(other) Also known as: #eql?

[ GitHub ]

  
# File 'activerecord/lib/active_record/normalization.rb', line 145

def ==(other)
  self.class == other.class &&
    normalize_nil? == other.normalize_nil? &&
    normalizer == other.normalizer &&
    cast_type == other.cast_type
end

#cast(value)

[ GitHub ]

  
# File 'activerecord/lib/active_record/normalization.rb', line 133

def cast(value)
  normalize(super(value))
end

#eql?(other)

Alias for #==.

[ GitHub ]

  
# File 'activerecord/lib/active_record/normalization.rb', line 151

alias eql? ==

#hash

[ GitHub ]

  
# File 'activerecord/lib/active_record/normalization.rb', line 153

def hash
  [self.class, cast_type, normalizer, normalize_nil?].hash
end

#inspect

[ GitHub ]

  
# File 'activerecord/lib/active_record/normalization.rb', line 157

def inspect
  Kernel.instance_method(:inspect).bind_call(self)
end

#normalize(value) (private)

[ GitHub ]

  
# File 'activerecord/lib/active_record/normalization.rb', line 162

def normalize(value)
  normalizer.call(value) unless value.nil? && !normalize_nil?
end

#normalize_nil (readonly) Also known as: #normalize_nil?

[ GitHub ]

  
# File 'activerecord/lib/active_record/normalization.rb', line 123

attr_reader :cast_type, :normalizer, :normalize_nil

#serialize(value)

[ GitHub ]

  
# File 'activerecord/lib/active_record/normalization.rb', line 137

def serialize(value)
  serialize_cast_value(cast(value))
end

#serialize_cast_value(value)

[ GitHub ]

  
# File 'activerecord/lib/active_record/normalization.rb', line 141

def serialize_cast_value(value)
  ActiveModel::Type::SerializeCastValue.serialize(cast_type, value)
end