Module: ActiveRecord::PGEnum::Helper::ClassMethods

Defined in:
lib/active_record/pg_enum/helper.rb

Instance Method Summary collapse

Instance Method Details

#pg_enum(definitions) ⇒ Object

Declare an enum attribute where the values map to strings enforced by PostgreSQL’s enumerated types.

class Conversation < ActiveRecord::Base
  include ActiveRecord::PGEnum::Helper

  pg_enum status: %i[active archived]
end

This is merely a wrapper over traditional enum syntax so that you can define string-based enums with an array of values.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/active_record/pg_enum/helper.rb', line 20

def pg_enum(definitions)
  values = definitions.values.map do |value|
    if value.is_a? Array
      keys   = value.map(&:to_sym)
      values = value.map(&:to_s)

      Hash[keys.zip(values)]
    else
      value
    end
  end

  enum Hash[definitions.keys.zip(values)]
end