Hola, que tal amigos de Devcodela,! Les habla Elicia Cordova. Y en este video aprenderemos a generar código de manera fácil y rápida utilizando scaffold en Ruby on Rails.
Scaffold significa andamio en inglés. Es un generador de código el cual nos permite tener las funcionalidades básicas de administración de un modelo, es decir el CRUD (Create, Read, Update, Delete), y que son típicas para cualquier sistema transaccional. Para el objetivo de este video crearemos dos modelo de datos demo para los usuarios y sus respectivos posts de un blog utilizando el generador de código scaffold.
Los usuarios de nuestro blog demo tendrán un único identificador entero llamado id, nombre (string) y un email (string). Y para nuestro post tendrá un único identificador entero llamado id, titulo (string) y contenido (string) y un atributo que asocia cada posts a un usuario en particular, esto es el atributo user_id.
![](https://dl.dropboxusercontent.com/u/47365355/tabla.jpg)
Como veremos mas adelante posts y users cada una corresponde a una tabla en una base de datos y sus atributos son columnas de cada tabla.
En esta sesion implementaremos el modelo de datos del user, junto con una interfaz web para el modelo. Vamos a pensar en un recurso user, el cual nos permitirá pensar en los users como objetos que se pueden leer, actualizar y eliminar a través del protocolo http. Nuestro recurso user será creado por un programa generador de código llamado scaffold el cual viene como estándar con cada proyecto de Rails. Entonces,
>>>
$ rails generate scaffold User nombre:string email:string
Los parámetros que se pasan al comando scaffold son el nombre del recurso (User) junto con parámetros opcionales para los atributos del módulo de datos. Al incluir nombre y email hemos organizado el modelo de User de la imagen anterior. No hay necesidad de incluir el parámetro id, pues éste es creado automáticamnete por Rails para el uso de la clave principal o primary key de la Base de Datos.
Al igual que el recuso User, generamos código scaffold en este caso la aplicacion del modelo de datos post. Entonces,
>>>
$ rails generate scaffold Post titulo:string contenido:string user_id:integer
Los argumnetos que se pasan al comando scaffold son el nombre del recurso (Post) junto con parámetros opcionales para los atributos del módulo de datos. Igualmente, no hay necesidad d incluir el parámetro id, pues éste es creado automáticamnete por Rails para el uso de la clave principal o primary key de la Base de Datos. Por el momento no consideramos las asociaciones entre User y Post, eso lo veremos mas adelante en este video.
A continuación actualizaremos nuestra Base de datoscon los datos de los modelos, por eseo debemos migrar la Base de Datos con RAKE.
>>>
$ bundle exec rake db:migrate
Esto simplemente actualizará la Base de Datos con los modelos de user y post.
Con esto podemos correr el servidor web local usando rails server o rails s. Vemos nuestra aplicacion demo en localhost:3000
Despues de ingresar a localhost:3000 nos mostrarà la misma página por defecto de Rails, pero al entrar a /users nos mostrarà una lista de todos los users y una pagina donde podemos crear un nuevo posts. Como vemos a continuacion la siguiente tabla muestran todas las acciones y su respectivas URLs.
>>>
URL Action Purpose
/users index page to list all users
/users/1 show page to show users with id 1
/users/new new page to make a new user
/users/1/edit edit page to edit user with id 1
Partimos de la pàgina para mostrar todos los users de nuestra app que en un principio no hay user.
De la misma manera, accedemos a /posts nos mostrarà una lista de todos los posts y una pagina donde podemos crear un nuevo posts. Como vemos a continuacion la siguiente tabla muestra la correspondencia entre las páginas y las URLs.
>>>
URL Action Purpose
/posts index page to list all posts
/posts/1 show page to show posts with id 1
/posts/new new page to make a new post
/posts/1/edit edit page to edit post with id 1
En un principio no hay posts.
Una de las caracteristicas de Rails es la capacidad de formar asociaciones entre diferentes modelos de datos. En nuestro caso cada user tiene nuchos posts. Podemos actualizar el modelo de user y el de posts como sigue.
>>>
A user has many microposts.
app/models/user.rb
class User < ActiveRecord::Base
has_many :microposts
end
>>>
A micropost belongs to a user.
app/models/micropost.rb
class Micropost < ActiveRecord::Base
belongs_to :user
end
Podemos visualizar el resultado de esta asociación. Debido a que la columna user_id en la tabla post, Rails(mediante Active Record) puede infererir los post asociados a cada usuario.
Por ahora podemos examinar las relaciones de asociación usuario-post utilizando la consola $ rails console y luego recuperamos el primer usuario de la base de datos utilizando User.first y se muestran en primer_usuario. Luego accedemos a los posts de ese usuario utilizando primer_usuario.posts. Active Record devuelve todos los posts con user_id igual que el id del primer_nombre. Mas adelante aprendermos màs sobre esto.
>>>
$ rails console
>> first_user = User.first
=> #<User id: 1, name: "Michael Hartl", email: "[email protected]",
created_at: "2013-03-06 02:01:31", updated_at: "2013-03-06 02:01:31">
>> first_user.microposts
=> [#<Micropost id: 1, content: "First micropost!", user_id: 1, created_at:
"2013-03-06 02:37:37", updated_at: "2013-03-06 02:37:37">, #<Micropost id: 2,
content: "Second micropost", user_id: 1, created_at: "2013-03-06 02:38:54",
updated_at: "2013-03-06 02:38:54">]
>> exit
No te preocupes si aún no entiendes bien el código por dentro, pues en el siguiente video lo explicaré mas a detalle todo el código generado así como el funcionamiento del MVC de nuestra aplicación, Asi q no se lo pierdan.
Bueno amigos, eso fue todo por le video de hoy, espero q les haya gustado y no se olviden de seguirnos en nuestras redes sociales, envíennos sus comentarios, sugerencias y dudas que les responderemos en la brevedad posible. Hasta la proxima.