class ActiveRecord::Type::ImmutableString
Active Model ImmutableString Type¶ ↑
Attribute type to represent immutable strings. It casts incoming values to frozen strings.
class Person include ActiveModel::Attributes attribute :name, :immutable_string end person = Person.new person.name = 1 person.name # => "1" person.name.frozen? # => true
Values are coerced to strings using their to_s
method. Boolean
values are treated differently, however: true
will be cast to "t"
and false
will be cast to "f"
. These strings can be customized when declaring an attribute:
class Person include ActiveModel::Attributes attribute :active, :immutable_string, true: "aye", false: "nay" end person = Person.new person.active = true person.active # => "aye"
Public Class Methods
Calls superclass method
# File activemodel/lib/active_model/type/immutable_string.rb, line 38 def initialize(**args) @true = -(args.delete(:true)&.to_s || "t") @false = -(args.delete(:false)&.to_s || "f") super end
Public Instance Methods
Calls superclass method
# File activemodel/lib/active_model/type/immutable_string.rb, line 48 def serialize(value) case value when ::Numeric, ::Symbol, ActiveSupport::Duration then value.to_s when true then @true when false then @false else super end end
# File activemodel/lib/active_model/type/immutable_string.rb, line 44 def type :string end