Module: PgEnum::ActiveRecord::ConnectionAdapters::SchemaStatements

Defined in:
lib/pg_enum/active_record.rb

Instance Method Summary collapse

Instance Method Details

#create_enum(enum_name, options = {}) ⇒ Object



6
7
8
9
10
11
12
13
14
15
# File 'lib/pg_enum/active_record.rb', line 6

def create_enum(enum_name, options = {})
  if options[:force] && enum_exists?(enum_name)
    drop_enum(enum_name)
  end

  create_enum_sql = "CREATE TYPE #{enum_name} AS ENUM ('"
  create_enum_sql << options[:values].join("','")
  create_enum_sql << "')"
  execute create_enum_sql
end

#drop_enum(enum_name) ⇒ Object



17
18
19
# File 'lib/pg_enum/active_record.rb', line 17

def drop_enum(enum_name)
  execute "drop type #{enum_name}"
end

#enum_exists?(enum_name) ⇒ Boolean

Returns:

  • (Boolean)


21
22
23
24
# File 'lib/pg_enum/active_record.rb', line 21

def enum_exists?(enum_name)
  res = execute("select count(1) from pg_catalog.pg_type where typcategory = 'E' and typname = '#{enum_name}'")
  (res.try(:first).try(:values).try(:first).to_i > 0)
end