Railsでscaffoldコマンドの効果を「元に戻す」方法はありますか?
Railsでscaffoldコマンドの効果を「元に戻す」方法はありますか?
回答:
まず、scaffold
コマンドによって生成された移行をすでに実行している場合は、最初にロールバックを実行する必要があります。
rake db:rollback
以下を使用して足場を作成できます。
rails generate scaffold MyFoo
(または類似)、あなたはそれを破壊/元に戻すことができます
rails destroy scaffold MyFoo
これによりgenerate
、によって作成されたすべてのファイルが削除されますが、手動で行った追加の変更は削除されません。
rake db:rollback
あなたの足場を破壊する前に忘れないでください。これは、その前のスキャフォールドの移行以外に他の移行がない場合、テーブルを破棄または削除します。
git status
および/またはなどgit diff
、バージョン管理をチェックして、destroyコマンドが何かを見落としたかどうかを確認してください。
Rishav Rastogiは正しいです、そしてレール3.0以上でその:
レールは足場を生成します...
レールは足場を破壊します...
rake db:rollback
以前に実行されているrails destroy scaffold
か、それが最後のレーキではない場合db:migrate:down VERSION=20080906120000
、db / migrateでその名前の前の番号を見つけることができます
何をしたかを元に戻すことができます
rails generate xxx
沿って
rails destroy xxx
たとえば、これはジェネレーターを移行、足場、モデルなどに適用します
ジェネレータが作成するファイルを表示したいだけの場合は、ジェネレータ--pretendまたは-pオプションを渡すことができます。
最善の方法は:
destroy rake db: rake db:rollback
足場の場合:
rails destroy scaffold Name_of_script
したがって、レールでの足場を元に戻すために従うべきプロセス4.以下のようにコマンドを実行します。
rails d scaffold FooBar
rake db:rollback
rake db:migrate
上記の足場を作成した後にyou_had_run_の場合それでおしまい!
乾杯!
最初にロールバックを推奨し、ターミナルに入力します。
rake db:rollback
destroy scaffoldを追加します(「d」は「destroy」を表します)
rails d scaffold name_of_scaffold
コードをお楽しみください。
はい、scaffold
それ自体とそれを融合させるすべてのもの。
destroy
コマンドはの反対であるgenerate
と1を取り消します。と同じ方法で名前を渡すだけで、generate
プロジェクトからスクラブされます。
rails generate scaffold posts title:string content:text
rails destroy scaffold posts title:string content:text
足場を生成すると、次のファイルが作成されます。
コマンド: 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
このコマンドは、プロジェクトのスキャフォールドによって作成されたすべてのファイルを削除します。
ケース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
このようにして、足場を元に戻すことができます。また、dをdestroyに、gをgenerateにショートカットとして使用できます。
rails g scaffold MyFoo
生成および
rails d scaffold MyFoo
削除するため