Railsで足場を元に戻す


493

Railsでscaffoldコマンドの効果を「元に戻す」方法はありますか?


4
レールが足場xxxを破壊する
Robin Garg

1
Rails 5の場合:$ rails generate scaffold <name>を使用してscaffoldを生成します。ファイルを移行した場合は、ロールバックを実行します:$ rake db:rollback。$ rails destroy scaffold <name>を使用してスキャフォールドを破棄または元に戻します。あなたはすることができます続きを読むで、このことについて
Nesha Zoric

回答:


777

まずscaffoldコマンドによって生成された移行をすでに実行している場合は、最初にロールバックを実行する必要があります。

rake db:rollback

以下を使用して足場を作成できます。

rails generate scaffold MyFoo 

(または類似)、あなたはそれを破壊/元に戻すことができます

rails destroy scaffold MyFoo

これによりgenerate、によって作成されたすべてのファイルが削除されますが、手動で行った追加の変更は削除されません。


11
rake db:rollbackあなたの足場を破壊する前に忘れないでください。これは、その前のスキャフォールドの移行以外に他の移行がない場合、テーブルを破棄または削除します。
Yakob Ubaidi 2014年

3
場合によっては、足場から削除されなかった残りのファイルが残っています。git statusおよび/またはなどgit diff、バージョン管理をチェックして、destroyコマンドが何かを見落としたかどうかを確認してください。
アーロンコーディング2015

1
rake db:migrateを実行した後、他のいくつかの移行を行った場合は、足場を「破棄」する前にテーブルを破棄する移行を作成することは理にかなっています。したがって、rails g migration DropMyFoosのようなことを行ってから、移行ファイルを開き、テーブルを削除するためのコードを追加します。この移行を実行してから、destroy scaffoldを実行します。
Vikram Sharma

また、余分なファイルがある場合でも、my_fooのビューフォルダーが削除されることに注意してください。
Andrew K

167

Rishav Rastogiは正しいです、そしてレール3.0以上でその:

レールは足場を生成します...
レールは足場を破壊します...

8
@femiテーブルは熊手で作られました。それを削除する最良の方法は、rake db:rollback以前に実行されているrails destroy scaffoldか、それが最後のレーキではない場合db:migrate:down VERSION=20080906120000、db / migrateでその名前の前の番号を見つけることができます
Travis Pessetto

40

何をしたかを元に戻すことができます

rails generate xxx

沿って

rails destroy xxx

たとえば、これはジェネレーターを移行、足場、モデルなどに適用します


13

ジェネレータが作成するファイルを表示したいだけの場合は、ジェネレータ--pretendまたは-pオプションを渡すことができます。


10

最善の方法は:

destroy rake db:  rake db:rollback

足場の場合:

rails destroy scaffold Name_of_script

8
rails d scaffold <scaffoldname>

また、ロールバックまたは特定のバージョンへの移行を元に戻してください。


8

初めて、足場を生成している場合は、データベースの移行を確認できます。データベースをクリーンアップするには、それらを破棄する必要があります

rake db:rollback

その後

rails d scaffold

4

足場を生成するには:

rails generate scaffold xyz

足場を元に戻すには:

rails destroy scaffold xyz



2

足場も破壊した後、移行もロールバックする必要があります

rails destroy scaffold 'scaffoldname'
rake db:rollback

2

したがって、レールでの足場を元に戻すために従うべきプロセス4.以下のようにコマンドを実行します。

  1. rails d scaffold FooBar
  2. rake db:rollbackrake db:migrate上記の足場を作成した後にyou_had_run_の場合

それでおしまい!

乾杯!


2

最初にロールバックを推奨し、ターミナルに入力します。

rake db:rollback

destroy scaffoldを追加します(「d」は「destroy」を表します)

rails d scaffold name_of_scaffold

コードをお楽しみください。



1

すでにrake db:migrateを実行している場合は、最初にテーブルを破棄するためにrake db:rollbackを実行する必要があります。

rails d scaffoldモデル


1

最初にrake db:rollbackを実行して、マイグレーションをロールバックする必要があります。次に、

rails d scaffold foo

1

はい、scaffoldそれ自体とそれを融合させるすべてのもの。

destroyコマンドはの反対であるgenerateと1を取り消します。と同じ方法で名前を渡すだけで、generateプロジェクトからスクラブされます。

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

1

足場を生成するには:

rails generate scaffold abc

この足場を元に戻すには:

rails destroy scaffold abc

マイグレーションを実行した場合は、ロールバックするだけです

rake db:rollback STEP=1

1

gitに基づく別のソリューションを提供する

新しいプロジェクトを始める

rails new project_name
cd project_name

gitを初期化する

git init
git commit -m "initial commit"

足場を作成する

rails g scaffold MyScaffold
rake db:migrate

足場をロールバックする

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

1

rails [option] scaffold scaffold_name

オプション

g    generate
d    destroy

もしあなたがそうするなら

rails g  scaffold myFoo

次に、それを使用して元に戻します

rails d scaffold MyFoo

0

足場を生成すると、次のファイルが作成されます。

コマンド: rails generate scaffold Game

作成されたファイル:

>       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

この後に移行を実行した場合は、足場を削除すると移行ファイルも削除され、その移行を元に戻すことができないため、最初に移行をロールバックする必要があります。

移行を実行した場合:

rake db:rollback

この後、このコンマッドによって足場を安全に削除できます。

rails d scaffold Game

このコマンドは、プロジェクトのスキャフォールドによって作成されたすべてのファイルを削除します。


0

を実行するときはいつでもrails grails d(破棄)を実行して逆にして、生成したものを削除できます。を既に実行している場合はrake db:migraterake db:rollback破棄する前に実行する必要があります:)


0

ケース1:このコマンドのみを実行してscaffoldを生成する場合-

rails generate scaffold MODEL_NAME FIELD_NAME:DATATYPE

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

しかし、今までのような移行のためのコマンドを実行していません

rake db:migrate

次に、このようなコマンドのみを実行する必要があります-

rails destroy scaffold User name:string address:text

ケース2:以下のようなコマンドで(Scaffold and Migration)をすでに実行している場合-

rails generate scaffold User name:string address:text

rake db:migrate 

次に、最初のロールバック移行コマンドを実行してから、以下のように足場を破棄する必要があります-

rake db:rollback

rails destroy scaffold User name:string address:text

このようにして、足場を元に戻すことができます。また、ddestroyにggenerateにショートカットとして使用できます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.