而Rails的activerecord也支持enum方法,来支持更多的判断等操作。比如

PostgreSQL官方文档介绍了枚举类型和它的操作。

创建枚举类型。

  1. CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');

functions-enum这里有enum所有支持的函数。

添加枚举的列。

  1. # 20151009022320_add_status_to_articles.rb
  2. class AddStatusToArticles < ActiveRecord::Migration
  3. def up
  4. execute <<-SQL
  5. CREATE TYPE article_status AS ENUM ('draft', 'published');
  6. add_column :articles, :status, index: true
  7. def down
  8. execute <<-SQL
  9. DROP TYPE article_status;
  10. SQL
  11. remove_column :articles, :status
  12. end

在article.rb中定义enum。

  1. ALTER TYPE enum_type ADD VALUE 'new_value'; -- appends to list
  2. ALTER TYPE enum_type ADD VALUE 'new_value' BEFORE 'old_value';
  3. ALTER TYPE enum_type ADD VALUE 'new_value' AFTER 'old_value';

用Rails可以这样做。

查看数据库的所有枚举类型可以这样。

  1. SELECT n.nspname AS enum_schema,
  2. t.typname AS enum_name,
  3. e.enumlabel AS enum_value
  4. FROM pg_type t

完结。