Sha256: 6734701f94d9e092a75b3b1587574738d20131c7d05543d7eb1d46e96315b3d3
Contents?: true
Size: 894 Bytes
Versions: 1
Compression:
Stored size: 894 Bytes
Contents
module ActiveRecord # Declare an enum attribute where the values map to strings enforced by PostgreSQL's # enumerated types. # # class Conversation < ActiveRecord::Base # include ActiveRecord::PGEnum(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. def self.PGEnum(**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 Module.new do define_singleton_method(:inspect) { %{ActiveRecord::PGEnum(#{definitions.keys.join(" ")})} } define_singleton_method :included do |klass| klass.enum Hash[definitions.keys.zip(values)] end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
activerecord-pg_enum-0.4.0 | lib/active_record/pg_enum/helper.rb |