Class: ActiveModel::Type::String

Inherits:
ImmutableString show all
Defined in:
activemodel/lib/active_model/type/string.rb

Overview

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

This class is a specialization of ActiveModel::Type::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.

Direct Known Subclasses

ActiveRecord::Type::Text

Instance Attribute Summary

Attributes inherited from Value

#limit, #precision, #scale

Instance Method Summary collapse

Methods inherited from ImmutableString

#initialize, #serialize, #serialize_cast_value, #type

Methods inherited from Value

#==, #as_json, #assert_valid_value, #binary?, #cast, #changed?, #deserialize, #force_equality?, #hash, #immutable_value, #initialize, #map, #serializable?, #serialize, #type, #type_cast_for_schema, #value_constructed_by_mass_assignment?

Constructor Details

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

Instance Method Details

#changed_in_place?(raw_old_value, new_value) ⇒ Boolean

Returns:



14
15
16
17
18
# File 'activemodel/lib/active_model/type/string.rb', line 14

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

#to_immutable_stringObject



20
21
22
23
24
25
26
27
28
# File 'activemodel/lib/active_model/type/string.rb', line 20

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