而Rails的activerecord也支持enum方法,来支持更多的判断等操作。比如
PostgreSQL官方文档介绍了枚举类型和它的操作。
创建枚举类型。
CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');
functions-enum这里有enum所有支持的函数。
添加枚举的列。
# 20151009022320_add_status_to_articles.rb
class AddStatusToArticles < ActiveRecord::Migration
def up
execute <<-SQL
CREATE TYPE article_status AS ENUM ('draft', 'published');
add_column :articles, :status, index: true
def down
execute <<-SQL
DROP TYPE article_status;
SQL
remove_column :articles, :status
end
在article.rb中定义enum。
ALTER TYPE enum_type ADD VALUE 'new_value'; -- appends to list
ALTER TYPE enum_type ADD VALUE 'new_value' BEFORE 'old_value';
ALTER TYPE enum_type ADD VALUE 'new_value' AFTER 'old_value';
用Rails可以这样做。
查看数据库的所有枚举类型可以这样。
SELECT n.nspname AS enum_schema,
t.typname AS enum_name,
e.enumlabel AS enum_value
FROM pg_type t
完结。