123456789_123456789_123456789_123456789_123456789_

Class: ActiveModel::Type::String

Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Subclasses:
ActiveRecord::Type::Text, ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Macaddr, ActiveRecord::ConnectionAdapters::PostgreSQL::OID::SpecializedString, ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Xml
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
Instance Chain:
Inherits: ActiveModel::Type::ImmutableString
Defined in: activemodel/lib/active_model/type/string.rb

Overview

Active Model String Type

::ActiveModel::Attribute type for strings. It is registered under the :string key.

This class is a specialization of ImmutableString. It performs coercion in the same way, and can be configured in the same way. However, it accounts for mutable strings, so dirty tracking can properly check if a string has changed.

Class Method Summary

ImmutableString - Inherited

Value - Inherited

.new

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

Instance Attribute Summary

Value - Inherited

Instance Method Summary

ImmutableString - Inherited

Value - Inherited

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

::ActiveModel::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?

Alias for Value#==.

#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.

Constructor Details

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

Instance Method Details

#changed_in_place?(raw_old_value, new_value) ⇒ Boolean

[ GitHub ]

  
# File 'activemodel/lib/active_model/type/string.rb', line 16

def changed_in_place?(raw_old_value, new_value)
  if new_value.is_a?(::String)
    raw_old_value != new_value
  end
end

#to_immutable_string

[ GitHub ]

  
# File 'activemodel/lib/active_model/type/string.rb', line 22

def to_immutable_string
  ImmutableString.new(
    true: @true,
    false: @false,
    limit: limit,
    precision: precision,
    scale: scale,
  )
end