Ruby on Rails, parte 12: Modelos y migraciones

Vamos a continuar con el proyecto que comenzamos en el último posteo, Ruby on Rails, parte 11: Conexión con MySQL. En este había creado tres bases de datos llamadas: organizador_developmentorganizador_testorganizador_production. Con la que vamos a trabajar momentáneamente para desarrollar nuestra aplicación es con organizador_development. En esta ocasión aprenderemos a crear tablas para nuestra base de datos, pero antes tenemos que tener en cuenta dos cosas: qué son los modelos y qué son las migraciones.

 

Modelos

Bien, por empezar los modelos son clases que heredan de otra clase llamada ActiveRecord. Rails trabaja con un ORM llamado así, ActiveRecord. Si venís del mundo de PHP tal vez conozcas otros ORM como el caso de Doctrine o Propel. Los ORM son una técnica de la programación orientada a objetos para trabajar con una base de datos a través de objetos y evitando usar código de consultas. De esta manera nosotros creamos un modelo para cada tabla de nuestra base de datos.

Por ejemplo en nuestra aplicación nosotros tendremos dos modelos: Tarea, y Observacion. La lógica será simple, el usuario podría ingresar tareas, y cada una de ellas podrá tener muchas observaciones.

Empecemos. Entramos a nuestra aplicación desde la consola de Rails, en mi caso:

cd organizador

Una vez dentro crearé los dos modelos. Empezaré por el modelo Tarea:

rails g model Tarea titulo:string descripcion:text prioridad:integer activo:boolean

Bueno, uso el comando rails, la “g” de “generate” y la palabra “model” para indicarle a la consola de rails que debe generar un modelo. Luego debo ingresar  las columnas con el nombre, dos puntos y el tipo de dato. En este caso tendremos cuatro campos: titulo, será justamente el título para cada tarea; descripcion, para indicar de qué se trata la tarea. En el caso de titulo será un string, osea una cadena corta mientras que descripcion será un text, una cadena larga. Luego tendremos prioridad que será un entero y activo, en realidad la base de datos guardará un entero que podrá ser 1 ó 0, osea true o false.

Ahora vamos a crear el modelo Comentario:

rails g model Comentario mensaje:text tarea:references

En este caso agregaremos un campo mensaje con el comentario en sí que será un text. Sin embargo si te fijaste bien hay un campo tarea con un tipo de dato llamado references. En realidad no es un tipo de dato sino que le estoy indicando a mi modelo que estará relacionado con con otro, en este caso con el modelo tarea. Osea cada comentario le pertenecerá a una tarea, esto generará en realidad un campo de tipo integer llamado tarea_id. Ya veremos las relaciones entre modelos más adelante.

Bien, ahora vamos a la raíz de nuestro proyecto a la carpeta db -> migrate dentro de este directorio debería haber dos archivos con un número largo un guión bajo y los nombres de los modelos que acabamos de crear, estos archivos son las migraciones.

 

Migraciones
Las migraciones son los archivos que nos permitirán crear nuestras tablas. En ellos definiremos las columnas (aunque ya lo hicimos al crear los modelos automáticamente)
Además de las columnas que creamos los modelos tendrán una propiedad timestamps que creará dos columnas en la base de datos de fecha y hora para la creación de un registro y cada modificación del mismo. Si abriste ambos archivos lo podés comprobar en cada uno.  Si no querés que se guarden esas dos columnas podés borrar esa línea:
t.timestamps
Y no los creará. En mi caso yo dejaré todo como está.
Tal vez te preguntes por qué no definimos ninguna primary key, pero la realidad es que no hace falta ya que Rails creará por nosotros un campo llamado id en cada tabla que será obviamente la clave primaria de cada registro.
Bueno, ahora que ya tenemos nuestros modelos y nuestras migraciones vamos a crear las tablas. Abrimos la consola de rails y escribimos lo siguiente:
rake db:migrate

Ahora podés dirigirte la interfaz de tu MySQL y verás dentro de la base de datos organizador_development las dos tablas creadas y una tercera llamada schema_migrations, ésta última la genera Rails automáticamente para guardar datos relacionados con las migraciones.

Pero si te has fijado bien las tablas se han creado con minúscula y una “s” al final, osea en plural. Esto es porque en Rails los modelos deben escribirse con la primer letra en mayúscula y en singular, mientras que las tablas deben llamarse en plural. Por tanto el modelo Tarea servirá para hacer consultas con la tabla tareas.
Bueno, ahora que tenemos nuestras tablas nos detendremos. En nuestro próximo posteo aprenderemos a hacer consultas a partir de los modelos.
Saludos!
Redes sociables

    2 Replies to “Ruby on Rails, parte 12: Modelos y migraciones”

    Comments are closed.