En cada migration de definen dos metodos principales el self.up y el self.down, la idea es que en el self.up escribas el codigo necesario para la creación de una tabla el modificiado o lo que sea que desees hacer en esa migration y en el self.down escribas el codigo necesario para revertir ese cambio, a continuacion voy a poner una lista con las operaciones que se pueden realizar en las migrations:
Table Options (table 1.1):
- string (crea una campo del tipo string)
- boolean (crea un campo del tipo boolean)
- integer (crea un campo del tipo integer)
- float (crea un campo del tipo float)
- date (crea un campo del tipo date)
- datetime (crea un campo del tipo datetime)
- remove (quita un campo de la tabla, se utiliza solo para el change_table)
- references (crea un campo utilizando el nombre del campo + "_id")
- remove_references (quita un campo que tiene el nombre del campo + "_id")
- change (cambia un campo, solo se utiliza para el change_table)
- change_default (cambia el valor por defecto de un campo)
- index (crea un indice para un atributo de la tabla)
- remove_index (quita un indice a determinado atributo)
- timestamp (crea dos campos un es created_at y otro updated_at)
- remove_timestamps (quita dos campos created_at y updated_at, solo se utilza en el change_table)
- rename (cambia el nombre del atributo)
create_table
create_table nombre_de_tabla opciones_de_creacion do |table|
table.options nombre_del_campo, aditional_options
end
En options puede ir cualquiera de las opciones que esta dentro de table 1.1
En opciones_de_creacion puede ir cualquiera de las siguientes opciones
- id - Por defecto esta true, si esta en true crea un atributo con el nombre id y el tipo integer
- primary_key - Por defecto toma como primary_key al id, pero se le puede indicar cualquier campo de
- force - Por defecto esta en false, si esta en true nos indica que se cree la tabla aunque exista, en false indica lo contrario
Nota:
- Por defecto crea la primary key como id se pude cambiar utilizando las opciones.
Ejemplos
create_table :users do |table|
table.string :nombre
table.date :fecha_nacimiento
table.boolean :activo
end
Crea una tabla llamada users con los siguientes campos id como primary key, nombre del tipo string, fecha_nacimiento del tipo date, y activo del tipo boolean.
create_table :users, :id => false, :force => true do |table|
table.string :nombre
table.date :fecha_nacimiento
end
Crea una tabla llamada users (aunque ya exista) con los siguientes campos nombre del tipo string y fecha_nacimiento del tipo date.
create_table :users, :id => false, :force => true do |table|
table.string :nombre
table.date :fecha_nacimiento
table.references :event
end
Crea una tabla llamada users (aunque ya exista) con los siguientes campos nombre del tipo string, fecha_nacimiento del tipo date y event_id del tipo integer.
change_table
change_table nombre_de_tabla opciones_de_creacion do |table|
table.options nombre_del_campo, aditional_options
end
change_table nombre_de_tabla opciones_de_creacion do |table|
table.options nombre_del_campo, aditional_options
end
El change_table es basicamente igual que el create_table en cuanto a sus opciones (ver la tabla 1.1), pero su accion es cambiar una tabla, esta debe existir.
Ejemplos
change_table :users do |table|
table.string :nombre, :default => "pepe"
table.remove :fecha_nacimiento
end
Este ejemplo agrega a la tabla users un campo nombre del tipo string que su valor por defecto es "pepe" y quita de la tabla el campo fecha de nacimiento (el mismo debe existir en la tabla).
change_table :users do |table|
table.index :type
table.remove_references :event
end
Este ejemplo crea un indice para el atributo type y quita el campo event_id.
change_table :users do |table|
table.change_default :nombre, "raul"
table.change :edad, :integer, :default => 0
table.timestamp
end
Este ejemplo cambia el tipo por defecto del campo nombre por "raul", cambia el tipo de edad para integer y le asigna el valor por defecto 0, y crea dos campos created_at y updated_at que indican cuando fue creado el usuario y cuando se modifico
drop_table
drop_table nombre_de_tabla
Esta sentencia nos permite eliminar una tabla
Ejemplo
drop_table :users
No hay comentarios:
Publicar un comentario