Cómo ejecutar `rails generate scaffold " cuando el modelo ya existe?
Soy nuevo en Rails, por lo que mi proyecto actual está en un estado extraño.
Una de las primeras cosas que generé fue un modelo de "Película". Luego comencé a definirlo con más detalle, agregué algunos métodos, etc.
Ahora me doy cuenta de que debería haberlo generado con rails generate scaffold
para conectar cosas como el enrutamiento, las vistas, el controlador, etc.
Traté de generar el andamiaje, pero recibí un error diciendo que ya existe un archivo de migración con el mismo nombre.
¿Cuál es la mejor manera para mí de ¿crear andamios para mi" Película " ahora? (utilizando rails 3)
6 answers
TL;DR: rails g scaffold_controller <name>
A pesar de que ya tiene un modelo, aún puede generar el controlador y los archivos de migración necesarios utilizando la opción rails generate
. Si ejecuta rails generate -h
puede ver todas las opciones disponibles para usted.
Rails:
controller
generator
helper
integration_test
mailer
migration
model
observer
performance_test
plugin
resource
scaffold
scaffold_controller
session_migration
stylesheets
Si desea generar un scaffold de controlador para su modelo, consulte scaffold_controller
. Solo para mayor claridad, aquí está la descripción de eso:
Extrae un controlador scaffoldeado y sus vistas. Pasar el nombre del modelo, bien camelCased o under_scored, y una lista de vistas como argumentos. El nombre del controlador se recupera como una versión pluralizada del modelo nombre.
Para crear un controlador dentro de un módulo, especifique el nombre del modelo como camino como 'parent_module/controller_name'.
Esto genera una clase controller en app / controllers e invoca helper, motores de plantillas y generadores de marcos de prueba.
Para crear tu recurso, usarías el resource
generador, y para crear una migración, también se puede ver el generador migration
(ver, hay un patrón a toda esta locura). Estos proporcionan opciones para crear los archivos que faltan para construir un recurso. Alternativamente, puede ejecutar rails generate scaffold
con la opción --skip
para omitir cualquier archivo que exista:)
Recomiendo pasar algún tiempo mirando las opciones dentro de los generadores. Son algo que no creo que estén muy bien documentados en libros y cosas así, pero son muy útiles.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-14 09:49:27
Gran respuesta de Lee Jarvis
, esto es solo el comando, por ejemplo; ya tenemos un modelo existente llamado User:
rails g scaffold_controller User
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-02 19:42:35
Para los que inician una aplicación rails con una base de datos existente, hay una gema genial llamada schema_to_scaffold
para generar un script de scaffold.
salidas:
rails g scaffold users fname:string lname:string bdate:date email:string encrypted_password:string
Desde su schema.rb
nuestro su renombrado schema.rb.
Compruébalo
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-10 08:10:38
Este comando debería hacer el truco:
$ rails g scaffold movie --skip
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-10 08:21:14
Puede hacer uso de scaffold_controller
y recuerde pasar el attributes
del modelo, o se generará scaffold sin los atributos.
rails g scaffold_controller User name email
# or
rails g scaffold_controller User name:string email:string
Este comando generará los siguientes archivos:
create app/controllers/users_controller.rb
invoke haml
create app/views/users
create app/views/users/index.html.haml
create app/views/users/edit.html.haml
create app/views/users/show.html.haml
create app/views/users/new.html.haml
create app/views/users/_form.html.haml
invoke test_unit
create test/controllers/users_controller_test.rb
invoke helper
create app/helpers/users_helper.rb
invoke test_unit
invoke jbuilder
create app/views/users/index.json.jbuilder
create app/views/users/show.json.jbuilder
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-20 12:46:00
En Rails 5 , todavía se puede ejecutar
$rails generate scaffold movie --skip
Para crear todos los archivos de scaffold que faltan o
rails generate scaffold_controller Movie
Para crear el controlador y ver solamente.
Para una mejor explicación echa un vistazo rails scaffold
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-22 10:55:12