Deshacer andamios en rieles

493

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

Daniel
fuente
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.

Rishav Rastogi
fuente
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 ...
Misha Rabinovich
fuente
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.

thekindofme
fuente
13

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

Sudhanshu Arya
fuente
10

La mejor manera es:

destroy rake db:  rake db:rollback

Para andamio:

rails destroy scaffold Name_of_script
usuario917158
fuente
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.

RageCore
fuente
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
dedennufan
fuente
4

Para generar andamios:

rails generate scaffold xyz

Para revertir andamios:

rails destroy scaffold xyz
uma
fuente
4

Los rieles destruyen el nombre

rake db:rollback
Starbuck
fuente
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
Amit Suroliya
fuente
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
Bhargav Mehta
fuente
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!

Shrivastava Manish
fuente
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.

Chutipong Roobklom
fuente
1

utilizar este

rails d scaffold MODEL_NAME

rake db:rollback
vipin
fuente
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

Shoaib Malik
fuente
1

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

rails d scaffold foo
Manish
fuente
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
JackHasaKeyboard
fuente
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
nitanshu verma
fuente
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
Ray Lee
fuente
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
Krishnar
fuente
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.

BIlal Khan
fuente
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 :)

Maddie
fuente
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.

Manoj Kumar
fuente
0
rails g scaffold MyFoo 

para generar y

rails d scaffold MyFoo

para quitar

Ayaz Ahmad Tarar
fuente
Y no es necesario mencionar los atributos, ¿es correcto? Gracias
Shane G