Railsにおける生成と巻き戻し(引用:Railsチュートリアル第3章)
背景と具体例
どんなに気を配っていてもRailsアプリ開発中に何か失敗をすることは往々にしてある。Railsではそのような失敗をカバーする機能がいくつもあるので、まとめておく。
一般的なシナリオの1つとして、生成したコードを元に戻したい場合がある。例えばコントローラを生成した後で、もっといいコントローラ名を思い付き、生成したコードを削除したくなった、あるいは綴りを間違えたために修正したいといった場合がそれに当たる。
Railsはコントローラ以外にも関連ファイルを大量に生成するため、生成されたコントローラファイルを削除するだけでは十分ではない。自動生成されたコードを元に戻すためには、新規作成されたファイルを削除するだけでなく、既存のファイルに挿入されたコードも削除する必要がある。(rails generate
を実行するとルーティングのroutes.rb
ファイルも自動的に変更される)
このようなとき、「generate」という言葉に因んで、rails destroy
というコマンドを実行することで元に戻すことが可能。下記はその例。
コントローラの場合
$ rails generate controller StaticPages home help
$ rails destroy controller StaticPages home help
モデルの場合
次のようにモデル
を自動生成、自動巻き戻しする方法も紹介。
$ rails generate model User name:string email:string
$ rails destroy model User
(上のコマンドからも分かるように、モデルをdestroy
する場合はモデル名以外の引数は不要。詳細理由はRailsチュートリアル第6章参照)
マイグレーションの場合
また、マイグレーションの変更を元に戻す方法も用意されている。
$ rails db:migrate
$ rails db:rollback
最初の状態に戻したいときは、VERSION=0
オプションを使用。
$ rails db:migrate VERSION=0
マイグレーションは逐次的に実行され、それぞれのマイグレーションに対してバージョン番号が付与される。したがって、上記の0を別の数字に置き換えることによって、指定したバージョンの状態に戻すことが可能。
開発中に袋小路に迷い込んでしまった場合でも、これらの機能を使えば元の状態を復元できるため焦る必要はない。
Author And Source
この問題について(Railsにおける生成と巻き戻し(引用:Railsチュートリアル第3章)), 我々は、より多くの情報をここで見つけました https://qiita.com/Shunpei/items/8de775177baba069c5d6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .