Module: PgEnum::ActiveRecord::ConnectionAdapters::SchemaStatements
- Defined in:
- lib/pg_enum/active_record.rb
Instance Method Summary collapse
- #create_enum(enum_name, options = {}) ⇒ Object
- #drop_enum(enum_name) ⇒ Object
- #enum_exists?(enum_name) ⇒ Boolean
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, = {}) if [:force] && enum_exists?(enum_name) drop_enum(enum_name) end create_enum_sql = "CREATE TYPE #{enum_name} AS ENUM ('" create_enum_sql << [: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
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 |