regresar rails migraciones migracion llaves hacer foraneas especifica eliminar ejecutar deshacer crear columna ruby ruby-on-rails-3 enums migration

ruby - migraciones - migracion en rails



¿Cómo describo una columna de enumeración en una migración de Rails 3? (11)

¿Cómo describo una columna de enumeración en una migración de Rails 3?


¡Rails 4.1 contiene enum por ahora!

Puedes escribir solo

class User < ActiveRecord::Base enum status: [ :admin, :user, :banned ] end

Para la migración escriba

t.integer :status

Carriles 3 y 4.0

La mejor solución en mi opinión es simple_enum gem.


Algo como

class User < ActiveRecord::Base validates_inclusion_of :status, :in => [:active, :inactive] def status read_attribute(:status).to_sym end def status= (value) write_attribute(:status, value.to_s) end end


Eche un vistazo a active_enum .

Creo que se ajusta a tus necesidades.


En una migración de Rails 3 puede hacer lo siguiente:

class CreateFoo < ActiveRecord::Migration def change create_table :foo do |t| t.column :foobar, "ENUM(''foo'', ''bar'')" end end end

Esto creará la tabla con la columna única "foobar" y los valores.


Esto también funcionará ...

add_column :table_name, :column_name, "enum(''abc'',''def'',''ghi'')", :default => ''abc''


Lo que funcionó para mí fue mapearlo de símbolos a enteros

TYPE_MAP = { type_one: 1, type_two:2, another_type:3 } def type TYPE_MAP.key(read_attribute(:type)) end def type=(s) write_attribute(:type, TYPE_MAP[s]) end

Pero para el controlador tienes que mapearlo de nuevo así:

def create @cupon_type = CuponType.new(params[:cupon_type]) @cupon_type.type = params[:cupon_type][:type].to_sym

Tenga en cuenta el .to_sym que anula la primera creación en el objeto (en mi caso eran cupones).

Ahora puedes usarlo así:

c.type == :type_one c.type = :type_two



Puede describir una columna de enumeración con:

t.column ''role'', ''user_role''

Creé el tipo de enumeración con:

execute "CREATE TYPE user_role AS ENUM (''consultant'', ''admin'');"

Inspeccionando la base de datos:

Column | Type | Modifiers | Storage | Stats target | Description ---------------+------------------------+-----------+----------+--------------+------------- role | user_role | | plain | |




t.enum :file_type ,:limit => [:jpg, :png, :gif] ,:default => :gif