Usando Scaffolding
Posted by makio in MVC, Rails, Scaffolding on domingo, 14 de junio de 2009
En el post anterior instalamos MySQL y las librerías necesarias para usarlo en nuestras futuras aplicaciones.
Vamos a generar nuestro primer CRUD (Create, Read, Update y Delete) en rails usando Scaffold Generators, para esto veamos que es Scaffolding.
Scaffolding: Es una vía rápida de agregar una clase de Active Record creando una serie de acciones estandarizadas para lectura, consultas, creación, actualización y eliminación de datos en nuestra aplicación. Estas acciones estandarizadas agregan el controlador lógico y una plantilla por default que muestra los campos que se van a desplegar y que tipos de entradas se usarán.
Ahora veamos como funciona en la práctica, si no quedó muy clara la definición con este ejemplo no habrá dudas.
Crear una aplicación nueva:
$ rails Video -d mysql
Crear Bases de Datos para la aplicación:
$ cd Video
$ rake db:create:all
Usando Scaffold
Vamos a usar el comando generate que se encuentra en la carpeta script de nuestra applicación.
ruby script/generate
Después usaremos el parametro scaffold que indica que vamos a usar este método para generar nuestro modelo.
scaffold
Por último asignamos el nombre de nuestro modelo y los campos que se utilizarán en la base de datos para almacenarlos.
Pelicula titulo:string descripcion:text anio:string
Juntando todo tendremos lo siguiente y lo ejecutamos:
$ ruby script/generate scaffold Pelicula titulo:string descripcion:text anio:string
exists app/models/
exists app/controllers/
exists app/helpers/
create app/views/peliculas
exists app/views/layouts/
exists test/functional/
exists test/unit/
create test/unit/helpers/
exists public/stylesheets/
create app/views/peliculas/index.html.erb
create app/views/peliculas/show.html.erb
create app/views/peliculas/new.html.erb
create app/views/peliculas/edit.html.erb
create app/views/layouts/peliculas.html.erb
create public/stylesheets/scaffold.css
create app/controllers/peliculas_controller.rb
create test/functional/peliculas_controller_test.rb
create app/helpers/peliculas_helper.rb
create test/unit/helpers/peliculas_helper_test.rb
route map.resources :peliculas
dependency model
exists app/models/
exists test/unit/
exists test/fixtures/
create app/models/pelicula.rb
create test/unit/pelicula_test.rb
create test/fixtures/peliculas.yml
create db/migrate
create db/migrate/20090614172420_create_peliculas.rb
Para saber como se generan las tablas con scaffolding, hay que abrir este archivo: db/migrate/20090614172420_create_peliculas.rb

Este archivo crea la tabla llama peliculas que estará ligada al modelo Pelicula. Y los parámetros que asignamos se mostrarán como las columnas de la tabla con su tipo.
Aplicar la migración:
Usando el comando rake db:migrate nos genera la tabla en nuestra base de datos.
$ rake db:migrate
(in /home/makio/www/Video)
== CreatePeliculas: migrating ================================================
-- create_table(:peliculas)
-> 0.0813s
== CreatePeliculas: migrated (0.0817s) =======================================
Ya explicado esto, corramos la aplicación en el servidor:
$ script/server
=> Booting WEBrick
=> Rails 2.3.2 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2009-06-14 12:36:03] INFO WEBrick 1.3.1
[2009-06-14 12:36:03] INFO ruby 1.8.7 (2008-08-11) [i486-linux]
[2009-06-14 12:36:08] INFO WEBrick::HTTPServer#start: pid=6851 port=3000
Abrimos nuestro navegador y entramos a esta dirección: http://127.0.0.1:3000/peliculas

Nuestro primer controlador está listo, ya tenemos una página funcional para agregar películas, editarlas, eliminarlas y listarlas. Ya por último dejo unos screenshots de algunas funciones, ya queda de tu parte usarlas para ver la funcionalidad.
Agregar Pelicula

Listar Peliculas

Espero esto les sea de mucha utilidad y haya quedado claro el funcionamiento de scaffolding, en el siguiente post haremos esto mismo pero de manera manual.
This entry was posted on domingo, 14 de junio de 2009 at 9:54 and is filed under MVC, Rails, Scaffolding. You can follow any responses to this entry through the RSS 2.0. You can leave a response.
- No comments yet.