web-dev-qa-db-ja.com

どうやって 'Rails generate'を元に戻すことができますか?

つまり、作成したすべてのファイルを削除し、加えた変更をロールバックしますか。必ずしもDBにではなく、設定ファイルにもっと。

例えば。 routes.rbファイルから削除されたモデル/コントローラのすべてのリソースマッピングを自動的に削除し、それ以外の場所では変更が行われた可能性がありますか。

ありがとう。

444
marcamillion
Rails destroy controller lalala
Rails destroy model yadayada
Rails destroy scaffold hohoho

Rails 3.2では、コマンドに新しいdショートカットが追加されたので、次のように書くことができます。

Rails d controller lalala
Rails d model yadayada
Rails d scaffold hohoho
881
Fábio Batista

ここで - pフラグを言及する価値があります(ふりのためにp)。

これをコマンドに追加すると、単に「テスト」を実行して、実際にファイルを削除せずに削除するファイルを表示します。

$ Rails d controller welcome -p

  remove  app/controllers/welcome_controller.rb
  invoke  erb
  remove    app/views/welcome
  invoke  test_unit
  remove    test/controllers/welcome_controller_test.rb
  invoke  helper
  remove    app/helpers/welcome_helper.rb
  invoke    test_unit
  remove      test/helpers/welcome_helper_test.rb
  invoke  assets
  invoke    coffee
  remove      app/assets/javascripts/welcome.js.coffee
  invoke    scss
  remove      app/assets/stylesheets/welcome.css.scss

問題なければ、-pフラグを付けずにコマンドを再実行してください。

43
Maikon

Rails destroy controller Controller_nameはたくさんのエラーを返していました。コントローラを破壊できるようにするために、routes.rbの関連ルートを削除する必要がありました。 P.S私はRails 3.1を使っています

22
Maikel

バージョン管理(Subversion、gitなど)を使用していますか?元に戻すだけです。そうでない場合 - なぜですか?

12
davmac

これはRailsでコントローラやモデルを生成または破壊するためのプロトタイプです。

Rails generate/destroy controller/model [controller/model Name]

たとえば、ユーザーコントローラを生成する必要がある場合

Rails generate controller User

または

Rails g controller User

ユーザーコントローラを破壊するか、上記の操作に戻りたい場合

Rails destroy controller User

または

Rails d controller User

enter image description here

10
uma

Railsのgenerateコマンドを使用して生成された変更を破棄または削除するには、Rails d model/controller/migration ...を使用できます。

例:Rails g model Home name:stringは、属性homeを持つnameという名前のモデルを作成します。そのコマンドから生成されたファイルとコードを削除するには、コマンドRails d model Homeを使います。

4
kishore

手動でコントローラを削除したい場合:

コントローラwelcomeの場合

rm app/controllers/welcome_controller.rb
rm app/views/welcome
rm test/controllers/welcome_controller_test.rb
rm app/helpers/welcome_helper.rb
rm test/helpers/welcome_helper_test.rb
rm app/assets/javascripts/welcome.js.coffee
rm app/assets/stylesheets/welcome.css.scss
3
Patrick_870206

次のようにsampleという名前のコントローラを作成したとします。

Rails generate controller sample

このControllerを破棄しなければならない場合は、generatedestroyで置き換えます。

Rails destroy controller sample.

生成を逆にしたい場合は、 'generate'と 'destroy'を入れ替えるだけです。

3
L11

Rails g/generate controller/model/migration xxxの出力を元に戻すには、次のようにします。

 Rails d/destroy controller/model/migration xxx
3
user3412661

ちょっとした変更以外は同じ方法で作成されたすべてのものを破壊することができます。コントローラーの場合

Rails d controller_name (d stands for destroy)

モデル用

Rails d model_name

あなたはあなたのマイグレーションにd(destroy)の代わりにg(generate)を入れるだけです。

2
Foram Thakral

Railsを使用している場合は、Rails d controller Usersを使用してください。

そしてzeusを使っているなら、zeus d controller Usersを使ってください。一方、gitまたはSVNを使用している場合は、コミット番号で変更を元に戻します。これはずっと速いです。

2
Santanu

以下の方法でRailsの生成を元に戻すことができます。

  • モデルの場合:Rails destroy MODEL
  • コントローラーの場合:Rails destroy controller_name
2
Vipul Lawande

それを逆にするには、それを破壊するだけです。ターミナルアプリケーションを開き、プロジェクトディレクトリに移動します。それから、これをタイプしてください:

Rails destroy model CamelCase
Rails destroy controller CamelCase

CamelCaseは任意のモデルまたはコントローラの名前です。モデル、移行、および関連するテストファイルの一部が削除されます。 (あなたがコマンドを実行した後にあなたはターミナルで結果を見ることができる。)

1

Railsのすべての世代はそれらの破棄を持っています。そのため、ジェネレータなどで "tasks"という名前の足場を作成すると、そのガネレートの変更をすべて破棄するには、次のように入力する必要があります。

Rails destroy scaffold Tasks

お役に立てば幸いです。

0
Flautarian

選択したモデルの足場を削除しました

bin/Rails d scaffold <AccessControl> //model name
0
Dinesh Vaitage

railsの生成を逆にするには、Railsを使います。destroy

Rails destroy Model

https://guides.rubyonrails.org/command_line.html#Rails-destroy

0
purge

GenerateをRails generate appとして使います。そのため、generateステートメントを再生成することは、destroyステートメントを使用して元に戻すことができます。 generatedestroyに置き換えるだけです。すなわち、Rails generate appRails destroy app' Railsが____asRailsを生成するように書くことができます。

0
Krishnaraj R

Rails generateを元に戻す前に、まずあなたが移行をロールバックすることを確認してください。

ケース1:足場を元に戻したい場合は、このコマンドを実行します -

Rails destroy scaffold MODEL_NAME

ケース2:モデルを元に戻したい場合はこのコマンドを実行します -

Rails destroy model MODEL_NAME

ケース3:あなたがコントローラを元に戻したいなら、このコマンドを実行します -

Rails destroy controller CONTROLLER_NAME

注:dの代わりにショートカットdestroyを使用することもできます。

0
Manoj Kumar