Deshacer andamios en rieles


493

¿Hay alguna forma de 'deshacer' los efectos de un comando de andamio en Rails?


44
rieles destruyen andamio xxx
Robin Garg

1
En Rails 5: Generar andamio con: $ rails generar andamio <nombre>. Si migró sus archivos, realice una reversión: $ rake db: rollback . Destruya o deshaga el andamio con: $ rails destruye el andamio <nombre>. Puede leer más sobre esto en
Nesha Zoric

Respuestas:


777

Primero , si ya ha ejecutado las migraciones generadas por el scaffoldcomando, primero debe realizar una reversión.

rake db:rollback

Puede crear andamios usando:

rails generate scaffold MyFoo 

(o similar), y puedes destruirlo / deshacerlo usando

rails destroy scaffold MyFoo

Eso eliminará todos los archivos creados por generate, pero no los cambios adicionales que haya realizado manualmente.


11
no te olvides rake db:rollbackantes de destruir tu andamio. Esto destruirá / descartará la tabla si no hay otra migración, excepto la migración del andamio anterior.
Yakob Ubaidi

3
En algunos casos, todavía quedan archivos sobrantes que no se eliminaron del andamio. Verifique el control de su versión, p. Ej. git statusY / o git diff, para ver si el comando de destrucción omitió algo.
codificación aaron

1
Si ejecutó rake db: migrate hizo algunas otras migraciones después de eso, entonces tiene sentido crear una migración para destruir la tabla antes de "destruir" el andamio. así que haga algo como rails g migración DropMyFoos y luego abra el archivo de migración y agregue código para soltar la tabla. Ejecute esta migración y luego ejecute el andamio de destrucción.
Vikram Sharma

También tenga en cuenta que eliminará la carpeta de vista para my_foo, incluso si tiene archivos adicionales allí.
Andrew K

167

Rishav Rastogi tiene razón, y con rieles 3.0 o superior es:

los rieles generan andamios ...
los rieles destruyen el andamio ...

8
@femi La mesa estaba hecha con rastrillo. La mejor manera de eliminarlo es ejecutarlo rake db:rollbackantes rails destroy scaffoldo si no es el último que rakeó db:migrate:down VERSION=20080906120000, puede encontrar el número antes de su nombre en db /
migrate

40

Puedes deshacer lo que hiciste con

rails generate xxx

Por

rails destroy xxx

Por ejemplo, esto aplica generadores a la migración, andamios, modelos ... etc.


13

Si solo desea ver los archivos que creará un generador, puede pasar la opción generador --pretender o -p.


10

La mejor manera es:

destroy rake db:  rake db:rollback

Para andamio:

rails destroy scaffold Name_of_script

8
rails d scaffold <scaffoldname>

Además, asegúrese de deshacer la migración que realizó, ya sea por reversión o hacia una versión en particular.


8

por primera vez, puede verificar la migración de su base de datos si ha generado un andamio. debes destruirlos para limpiar tu base de datos

rake db:rollback

entonces

rails d scaffold

4

Para generar andamios:

rails generate scaffold xyz

Para revertir andamios:

rails destroy scaffold xyz

4

Los rieles destruyen el nombre

rake db:rollback

1
primer retroceso (si migró), luego destruya el andamio
gavit

3

Para generar andamios en rieles -

rails generate scaffold MODEL_GOES_HERE

Para deshacer andamios en rieles -

rails destroy scaffold MODEL_GOES_HERE

2
También atajos rails gy rails d.
Steve Klein

2

necesita revertir las migraciones también después de destruir el andamio también

rails destroy scaffold 'scaffoldname'
rake db:rollback

2

Entonces, el proceso que debe seguir para deshacer el andamio en los rieles 4. Ejecute el comando de la siguiente manera:

  1. rails d scaffold FooBar
  2. rake db:rollbacksi you_had_run_ rake db:migratedespués de crear el andamio anterior?

¡Eso es!

¡Salud!


2

Recomiende la reversión Primero, ingrese su Terminal.

rake db:rollback

Agregar andamio de destrucción (la 'd' significa 'destruir')

rails d scaffold name_of_scaffold

Disfruta tu código.


1

utilizar este

rails d scaffold MODEL_NAME

rake db:rollback

1

Primero tendrá que hacer el rake db: rollback para destruir la tabla
si ya ha ejecutado rake db: migrate y luego puede ejecutar

rieles d modelo de andamio


1

primero debe revertir las migraciones haciendo rake db: revertir si hay alguna y luego destruir el andamio

rails d scaffold foo

1

Sí, el scaffoldmismo y todas las cosas que lo amalgaman.

El destroycomando es lo opuesto generatey deshará uno. Simplemente pásele el nombre de la misma manera que lo hizo generatey se eliminará de su proyecto:

rails generate scaffold posts title:string content:text
rails destroy scaffold posts title:string content:text

1

Para generar el andamio:

rails generate scaffold abc

Para revertir este andamio:

rails destroy scaffold abc

Si ha ejecutado la migración, simplemente retroceda

rake db:rollback STEP=1

1

proveedor otra solución basada en git

comenzar un nuevo proyecto

rails new project_name
cd project_name

inicializar git

git init
git commit -m "initial commit"

crear un andamio

rails g scaffold MyScaffold
rake db:migrate

deshacer el andamio

rake db:rollback
git reset --hard
git clean -f -d

1

rails [opción] scaffold scaffold_name

Opción

g    generate
d    destroy

Si lo haces

rails g  scaffold myFoo

Luego inviértalo de nuevo usando

rails d scaffold MyFoo

0

Cuando generemos un andamio, se crearán los siguientes archivos:

Mando: rails generate scaffold Game

Archivos creados:

>       invoke  active_record
>       create    db/migrate/20160905064128_create_games.rb
>       create    app/models/game.rb
>       invoke    test_unit
>       create      test/models/game_test.rb
>       create      test/fixtures/games.yml
>       invoke  resource_route
>        route    resources :games
>       invoke  inherited_resources_controller
>       create    app/controllers/games_controller.rb
>       invoke    erb
>       create      app/views/games
>       create      app/views/games/index.html.erb
>       create      app/views/games/edit.html.erb
>       create      app/views/games/show.html.erb
>       create      app/views/games/new.html.erb
>       create      app/views/games/_form.html.erb
>       invoke    test_unit
>       create      test/controllers/games_controller_test.rb
>       invoke    helper
>       create      app/helpers/games_helper.rb
>       invoke      test_unit
>       create        test/helpers/games_helper_test.rb
>       invoke    jbuilder
>       create      app/views/games/index.json.jbuilder
>       create      app/views/games/show.json.jbuilder
>       invoke  assets
>       invoke    coffee
>       create      app/assets/javascripts/games.js.coffee
>       invoke    scss
>       create      app/assets/stylesheets/games.css.scss
>       invoke  scss
>       create    app/assets/stylesheets/scaffolds.css.scss

Si hemos ejecutado la migración después de esto, primero tenemos que revertir la migración ya que la eliminación de scaffold también eliminará el archivo de migración y no podremos revertir esa migración.

En caso de que hayamos ejecutado la migración:

rake db:rollback

y después de esto podemos eliminar el andamio de forma segura con este comando.

rails d scaffold Game

Este comando eliminará todos los archivos creados por el andamio en su proyecto.


0

Cada vez que ejecute rails g, puede revertirlo ejecutando rails d(destruir) para eliminar lo que ha generado. Si ya has corrido rake db:migrate, deberás correr rake db:rollbackantes de destruir :)


0

Caso 1: si ejecuta solo este comando para generar un andamio:

rails generate scaffold MODEL_NAME FIELD_NAME:DATATYPE

Ex - rails generate scaffold User name:string address:text

pero hasta ahora no ejecutó ningún comando para la migración como

rake db:migrate

entonces deberías necesitar ejecutar solo este comando como -

rails destroy scaffold User name:string address:text

Caso 2: si ya ejecuta (Scaffold and Migration) con los siguientes comandos como:

rails generate scaffold User name:string address:text

rake db:migrate 

Entonces debería ejecutar el primer comando de migración de reversión y luego destruir el andamio como se muestra a continuación:

rake db:rollback

rails destroy scaffold User name:string address:text

De esta manera, podemos deshacer el andamiaje. También podemos utilizar d para destruir y g para generar como un acceso directo.


0
rails g scaffold MyFoo 

para generar y

rails d scaffold MyFoo

para quitar


Y no es necesario mencionar los atributos, ¿es correcto? Gracias
Shane G
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.