Desfazer andaimes no Rails


493

Existe alguma maneira de 'desfazer' os efeitos de um comando de andaime no Rails?


4
os trilhos destroem o andaime xxx
Robin Garg

1
No Rails 5: gere andaime com: $ rails gere andaime <name>. Se você migrou seus arquivos, execute uma reversão: $ rake db: rollback . Destrua ou desfaça o andaime com: $ rails destroy scaffold <name>. Você pode ler mais sobre isso em
Nesha Zoric

Respostas:


777

Primeiro , se você já executou as migrações geradas pelo scaffoldcomando, precisará executar uma reversão primeiro.

rake db:rollback

Você pode criar andaimes usando:

rails generate scaffold MyFoo 

(ou similar) e você pode destruí- lo / desfazê- lo usando

rails destroy scaffold MyFoo

Isso excluirá todos os arquivos criados por generate, mas não as alterações adicionais que você possa ter feito manualmente.


11
Não esqueça rake db:rollbackantes de destruir o seu andaime. Isso destruirá / descartará a tabela se não houver outra migração, exceto a migração do andaime antes dela.
Yakob Ubaidi

3
Em alguns casos, ainda existem arquivos que não foram excluídos do andaime. Verifique seu controle de versão, por exemplo, git statuse / ou git diff, para ver se o comando destroy perdeu alguma coisa.
Aaron-codificante

1
Se você executou o rake db: migrate fez outras migrações depois disso, faz sentido criar uma migração para destruir a tabela antes de "destruir" o andaime. faça algo como o DropMyFoos do rails g migration e abra o arquivo de migração e adicione o código para descartar a tabela. Execute essa migração e, em seguida, execute o andaime de destruição.
precisa saber é o seguinte

Lembre-se também de que ela removerá a pasta view do my_foo, mesmo que você tenha arquivos extras.
Andrew K

167

Rishav Rastogi está certo e, com os trilhos 3.0 ou superior, é:

trilhos geram andaimes ...
trilhos destruir andaime ...

8
@femi A mesa foi feita com ancinho. A melhor maneira de removê-lo está sendo executado rake db:rollbackantes rails destroy scaffoldou se não é a última que você fez ancinho db:migrate:down VERSION=20080906120000pode encontrar o número antes de seu nome no db / migrate
Travis Pessetto

40

Você pode desfazer o que fez com

rails generate xxx

De

rails destroy xxx

Por exemplo, isso aplica geradores à migração, andaime, modelo ... etc.


13

Se você quiser apenas ver os arquivos que um gerador criará, você pode passar a opção --pretend ou -p do gerador.


10

A melhor maneira é:

destroy rake db:  rake db:rollback

Para o andaime:

rails destroy scaffold Name_of_script

8
rails d scaffold <scaffoldname>

Além disso, certifique-se de desfazer a migração feita por reversão ou para uma versão específica.


8

pela primeira vez, você pode verificar a migração do banco de dados se tiver gerado andaimes. você deve destruí-los para limpar seu banco de dados

rake db:rollback

então

rails d scaffold

4

Para gerar andaimes:

rails generate scaffold xyz

Para reverter andaimes:

rails destroy scaffold xyz

4

Trilhos destroem o nome

rake db:rollback

1
primeira reversão (se você migrou), em seguida, destruir o andaime
gavit

3

Para gerar andaimes em trilhos -

rails generate scaffold MODEL_GOES_HERE

Para desfazer andaimes em trilhos -

rails destroy scaffold MODEL_GOES_HERE

2
Também atalhos rails ge rails d.
Steve klein

2

você também precisa reverter as migrações depois de destruir o andaime

rails destroy scaffold 'scaffoldname'
rake db:rollback

2

Portanto, processo que você deve seguir para desfazer andaimes nos trilhos 4. Execute o comando como abaixo:

  1. rails d scaffold FooBar
  2. rake db:rollbackse you_had_run_ rake db:migratedepois de criar o andaime acima?

É isso aí!

Felicidades!


2

Recomende a reversão Primeiro, digite seu Terminal.

rake db:rollback

Adicionar andaime destroy (o 'd' significa 'destroy')

rails d scaffold name_of_scaffold

Aproveite o seu código.


1

usa isto

rails d scaffold MODEL_NAME

rake db:rollback

1

Primeiro, você terá que fazer o rake db: rollback para destruir a tabela,
se você já executou o rake db: migrate e poderá executar

trilhos d modelo de andaime


1

você precisa reverter as migrações primeiro, executando rake db: rollback, se houver. E depois destrua o andaime,

rails d scaffold foo

1

Sim, o scaffoldpróprio e todas as coisas que o fundem.

O destroycomando é o oposto generatee desfaz um. Apenas passe o nome da mesma maneira que generateele fez e será removido do seu projeto:

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

1

Para gerar o andaime:

rails generate scaffold abc

Para reverter este andaime:

rails destroy scaffold abc

Se você executou a migração, basta reverter

rake db:rollback STEP=1

1

fornecedor outra solução baseada em git

iniciar um novo projeto

rails new project_name
cd project_name

inicialize o git

git init
git commit -m "initial commit"

criar um andaime

rails g scaffold MyScaffold
rake db:migrate

reverter o andaime

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

1

trilhos [opção] scaffold scaffold_name

Opção

g    generate
d    destroy

Se você fizer

rails g  scaffold myFoo

Em seguida, inverta-o novamente usando

rails d scaffold MyFoo

0

Quando geramos o andaime, os seguintes arquivos serão criados:

Comando: rails generate scaffold Game

Arquivos criados:

>       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

Se executarmos a migração depois disso, primeiro reverteremos a migração, pois a exclusão do andaime também removerá o arquivo de migração e não poderemos reverter essa migração.

Caso tenhamos executado a migração:

rake db:rollback

e depois disso, podemos remover com segurança o cadafalso por esta nômade.

rails d scaffold Game

Este comando removerá todos os arquivos criados pelo andaime no seu projeto.


0

Sempre que você executa rails g, você pode revertê-lo executando rails d(destruir) para remover o que gerou. Se você já executou rake db:migrate, precisará executar rake db:rollbackantes de destruir :)


0

Caso 1: se você executar apenas este comando para gerar o andaime -

rails generate scaffold MODEL_NAME FIELD_NAME:DATATYPE

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

mas até agora você não executou nenhum comando para migração como

rake db:migrate

então você deve executar apenas este comando como -

rails destroy scaffold User name:string address:text

Caso 2: se você já executa (Andaime e Migração) pelos comandos abaixo, como -

rails generate scaffold User name:string address:text

rake db:migrate 

Em seguida, você deve executar o primeiro comando de migração de reversão e destruir o andaime como abaixo -

rake db:rollback

rails destroy scaffold User name:string address:text

Assim, podemos desfazer andaimes. Também podemos usar d para destruir e g para gerar como um atalho.


0
rails g scaffold MyFoo 

para gerar e

rails d scaffold MyFoo

para remover


E não há necessidade de mencionar os atributos, está correto? Thanks
Shane G
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.