Class: ActiveRecord::Enum::EnumType

Inherits:
Type::Value
  • Object
show all
Defined in:
lib/active_record/enum.rb

Overview

:nodoc:

Instance Method Summary collapse

Constructor Details

#initialize(name, mapping, subtype) ⇒ EnumType

Returns a new instance of EnumType.



113
114
115
116
117
# File 'lib/active_record/enum.rb', line 113

def initialize(name, mapping, subtype)
  @name = name
  @mapping = mapping
  @subtype = subtype
end

Instance Method Details

#assert_valid_value(value) ⇒ Object



140
141
142
143
144
# File 'lib/active_record/enum.rb', line 140

def assert_valid_value(value)
  unless value.blank? || mapping.has_key?(value) || mapping.has_value?(value)
    raise ArgumentError, "'#{value}' is not a valid #{name}"
  end
end

#cast(value) ⇒ Object



119
120
121
122
123
124
125
126
127
128
129
# File 'lib/active_record/enum.rb', line 119

def cast(value)
  return if value.blank?

  if mapping.has_key?(value)
    value.to_s
  elsif mapping.has_value?(value)
    mapping.key(value)
  else
    assert_valid_value(value)
  end
end

#deserialize(value) ⇒ Object



131
132
133
134
# File 'lib/active_record/enum.rb', line 131

def deserialize(value)
  return if value.nil?
  mapping.key(subtype.deserialize(value))
end

#serialize(value) ⇒ Object



136
137
138
# File 'lib/active_record/enum.rb', line 136

def serialize(value)
  mapping.fetch(value, value)
end