asi*_*niy 68
Rails 4.1 现在包含枚举!
你可以写
class User < ActiveRecord::Base
enum status: [ :admin, :user, :banned ]
end
Run Code Online (Sandbox Code Playgroud)
对于迁移写
t.integer :status
Run Code Online (Sandbox Code Playgroud)
Rails 3和4.0
我认为最好的解决方案是simple_enum gem.
小智 8
在Rails 3 Migration中,您可以执行以下操作:
class CreateFoo < ActiveRecord::Migration
def change
create_table :foo do |t|
t.column :foobar, "ENUM('foo', 'bar')"
end
end
end
Run Code Online (Sandbox Code Playgroud)
这将创建具有单列"foobar"和值的表.
您可以使用以下方式描述枚举列:
t.column 'role', 'user_role'
Run Code Online (Sandbox Code Playgroud)
我用以下方法创建了枚举类型:
execute "CREATE TYPE user_role AS ENUM ('consultant', 'admin');"
Run Code Online (Sandbox Code Playgroud)
检查数据库:
Column | Type | Modifiers | Storage | Stats target | Description
---------------+------------------------+-----------+----------+--------------+-------------
role | user_role | | plain | |
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45401 次 |
| 最近记录: |