module PgEnum

Constants

ENUM_SQL

Public Class Methods

enum_rows(connection) click to toggle source
# File lib/pg_enum.rb, line 25
def self.enum_rows(connection)
  connection.select_all(ENUM_SQL)
end
load_enums_hash(connection) click to toggle source
# File lib/pg_enum.rb, line 19
def self.load_enums_hash(connection)
  self.enums_hash = enum_rows(connection).each_with_object({}) do |row, hash|
    hash.deep_merge!(row["name"] => { row["value"].to_sym => row["value"] })
  end
end

Public Instance Methods

pg_enum(attr, options = {}) click to toggle source
# File lib/pg_enum.rb, line 38
def pg_enum(attr, options = {})
  column = columns_hash[attr.to_s]

  if column.nil? || column.type != :enum
    raise "PgEnum: #{ model.table_name }.#{ attr } is not an enum"
  end

  enum(options.merge(column.name.to_sym => PgEnum.enums_hash[column.sql_type]))
end