ruby-on-rails - metalicos - seguridad armado de andamios
Diferencia entre andamio y modelo en rieles. (4)
Con
$rails generate scaffold <name>
puede generar automáticamente un controlador, modelo y vistas listos para usar con una interfaz web CRUD (Crear, Leer, Actualizar, Eliminar) completa. Es mucho más fácil y rápido que generar modelos, pero es poco probable que el código que genera sea perfecto para su aplicación.
Un scaffold es excelente para usar cuando se trata de ejemplos simples, maquetas rápidas o pruebas.
Si cambia de opinión y decide usar un andamio después de generar el modelo, siempre puede ejecutar
$rails generate scaffold <name>
Se creará todos los archivos que faltan. O si no está contento con el uso de andamios, siempre puede eliminarlo de la siguiente manera:
Generar andamio
$rails generate scaffold Story
Si ha migrado sus archivos, realice una reversión:
$rake db:rollback
Destruye o deshace el andamio : $ rails destruye el andamio Story
¿Cuál es la diferencia entre generar un andamio y generar un modelo en Rails? ¿Cuáles son las ventajas / desventajas de hacer cualquiera de las dos?
Generar un andamio incluye generar un modelo pero también genera
- Rutas completas
- Un controlador con todas las acciones para el manejo RESTful del modelo.
- Vistas que necesita el controlador
- talones de prueba
El andamiaje es un buen comienzo para los nuevos usuarios de Rails.
Lo más probable es que los nuevos usuarios se confundan con los andamios, ya que no entenderían cómo funcionan juntos todos los componentes. El andamiaje es probablemente el mejor para usuarios experimentados que desean un atajo para el trabajo que normalmente estarían repitiendo.
Cuando genera un modelo, obtiene un modelo así como algunos componentes relacionados. Una de mis formas favoritas de explicar temas como este es realmente probarlo o alentar a otros a que lo prueben, así que si ingresara los comandos, rails generate model Foo name:string description:text
dentro de un proyecto de Rails, obtendría:
invoke active_record
create db/migrate/20130719012107_create_foos.rb
create app/models/foo.rb
invoke test_unit
create test/unit/foo_test.rb
create test/fixtures/foos.yml
La primera línea invoca Active Record
, que básicamente vincula su modelo a su base de datos. La siguiente línea crea lo que se llama un archivo de migración. Los archivos de migración contienen instrucciones para alterar su base de datos. Este primer archivo de migración crea la tabla de la base de datos llamada ''foos'' y también creará columnas para "nombre" y "descripción".
La siguiente línea hace que el modelo en sí. El modelo es básicamente una clase de Ruby que se hereda de Active Record. Lo que esto significa es que cualquier método que pueda llamarse en Registro Activo ahora puede llamarse en su modelo. Las tres últimas líneas básicamente crean archivos de prueba relacionados para su modelo. Si estuviera usando RSpec, en su lugar se crearían archivos de especificaciones.
Si su aplicación Rails solo contuviera modelos, no tendría ningún tipo de vista que muestre información en una página, ni tendría instrucciones que controlen el flujo de información. Sus opciones serían también generar controladores (que a su vez generan sus vistas) o generar un andamio, que genera su modelo, vistas, controlador y escrituras en su archivo route.rb. Si corriera rails generate scaffold foo
obtendría:
invoke active_record
create db/migrate/20130719013307_create_foos.rb
create app/models/foo.rb
invoke test_unit
create test/unit/foo_test.rb
create test/fixtures/foos.yml
invoke resource_route
route resources :foos
invoke scaffold_controller
create app/controllers/foos_controller.rb
invoke erb
create app/views/foos
create app/views/foos/index.html.erb
create app/views/foos/edit.html.erb
create app/views/foos/show.html.erb
create app/views/foos/new.html.erb
create app/views/foos/_form.html.erb
invoke test_unit
create test/functional/foos_controller_test.rb
invoke helper
create app/helpers/foos_helper.rb
invoke test_unit
create test/unit/helpers/foos_helper_test.rb
invoke assets
invoke coffee
create app/assets/javascripts/foos.js.coffee
invoke scss
create app/assets/stylesheets/foos.css.scss
invoke scss
identical app/assets/stylesheets/scaffolds.css.scss
Para responder a su pregunta, la ventaja del andamio es que es rápido, fácil y todo está preconfigurado para usted. Sin embargo, las ventajas de generar modelos independientemente de andamios (y luego a su vez generar controladores / vistas donde sea necesario y escribir su propio archivo de rutas.rb) es que tiene mucho más control sobre su aplicación y cómo se ve y funciona, evita código innecesario, puede emplear el desarrollo guiado por el comportamiento o el desarrollo guiado por pruebas, y probablemente otras cosas que alguien más quiera agregar.
Mi último consejo es: Rails es muy fácil de usar, así que prueba a experimentarte tú mismo. Puede deshacer cualquier comando de generate
con un comando de destroy
correspondiente, así que, por ejemplo, los rails destroy scaffold Foo
eliminaría todos los archivos generados por los rails generate Scaffold Foo name:string description:string
Proyecto por experimentación.