Class: Enumy::Rails::ActiveModel::Type::Enum

Inherits:
ActiveModel::Type::Value
  • Object
show all
Defined in:
lib/enumy/rails/active_model/type/enum.rb

Instance Method Summary collapse

Constructor Details

#initialize(enum_class) ⇒ Enum

Returns a new instance of Enum.



6
7
8
9
# File 'lib/enumy/rails/active_model/type/enum.rb', line 6

def initialize(enum_class)
  @enum_class = enum_class
  super()
end

Instance Method Details

#cast(value) ⇒ Object



11
12
13
# File 'lib/enumy/rails/active_model/type/enum.rb', line 11

def cast(value)
  value.is_a?(@enum_class) ? value : @enum_class.find_by(key: value&.to_sym)
end

#deserialize(value) ⇒ Object



23
24
25
# File 'lib/enumy/rails/active_model/type/enum.rb', line 23

def deserialize(value)
  value.is_a?(@enum_class) ? value : @enum_class.find_by(key: value&.to_sym)
end

#serialize(value) ⇒ Object



15
16
17
18
19
20
21
# File 'lib/enumy/rails/active_model/type/enum.rb', line 15

def serialize(value)
  if value.is_a?(@enum_class)
    value.key.to_s
  else
    @enum_class.find_by(key: value&.to_sym) ? value&.to_s : nil
  end
end

#typeObject



27
28
29
# File 'lib/enumy/rails/active_model/type/enum.rb', line 27

def type
  :enum
end