Class: Enumerize::ActiveRecordSupport::Type

Inherits:
ActiveRecord::Type::Value
  • Object
show all
Defined in:
lib/enumerize/activerecord.rb

Instance Method Summary collapse

Constructor Details

#initialize(attr, subtype) ⇒ Type

Returns a new instance of Type.



114
115
116
117
# File 'lib/enumerize/activerecord.rb', line 114

def initialize(attr, subtype)
  @attr = attr
  @subtype = subtype
end

Instance Method Details

#as_json(options = nil) ⇒ Object



136
137
138
# File 'lib/enumerize/activerecord.rb', line 136

def as_json(options = nil)
  {attr: @attr.name}.as_json(options)
end

#cast(value) ⇒ Object



126
127
128
129
130
131
132
133
134
# File 'lib/enumerize/activerecord.rb', line 126

def cast(value)
  return value if @subtype.is_a?(Type)

  if value.is_a?(::Enumerize::Value)
    value
  else
    @attr.find_value(@subtype.cast(value))
  end
end

#encode_with(coder) ⇒ Object



140
141
142
143
144
# File 'lib/enumerize/activerecord.rb', line 140

def encode_with(coder)
  coder[:class_name] = @attr.klass.name
  coder[:attr_name] = @attr.name
  coder[:subtype] = @subtype
end

#init_with(coder) ⇒ Object



146
147
148
149
150
151
# File 'lib/enumerize/activerecord.rb', line 146

def init_with(coder)
  initialize(
    coder[:class_name].constantize.enumerized_attributes[coder[:attr_name]],
    coder[:subtype]
  )
end

#serialize(value) ⇒ Object



119
120
121
122
123
124
# File 'lib/enumerize/activerecord.rb', line 119

def serialize(value)
  v = @attr.find_value(value)
  return value unless v

  v.value
end