I want to delete all the files it created and roll back any changes made, but not necessarily to the database, but more to the config files.
I'd like to automatically delete all the resource mappings for the model/controller deleted in the routes.rb file and everywhere else that changes might have been made?
rails destroy controller lalala
rails destroy model yadayada
rails destroy scaffold hohoho
Rails 3.2 adds a new d
shortcut to the command, so now you can write:
rails d controller lalala
rails d model yadayada
rails d scaffold hohoho
It's worth mentioning the -p
flag here ("p" for pretend).
If you add this to the command it will simply do a "test" run and show you what files will be deleted without actually deleting them.
$ 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
If you're happy with it, run the command again without the -p
flag.
rails destroy controller Controller_name
was returning a bunch of errors. To be able to destroy controller I had to remove related routes in routes.rb. P.S. I'm using rails 3.1
This is a prototype to generate or destroy a controller or model in Rails:
rails generate/destroy controller/model [controller/model Name]
For example, if you need to generate a User Controller:
rails generate controller User
or
rails g controller User
If you want to destroy the User controller or revert to above action then use:
rails destroy controller User
or:
rails d controller User
https://i.stack.imgur.com/TN857.png
You could use rails d model/controller/migration ...
to destroy or remove the changes generated by using the rails generate
command.
For example:
rails g model Home name:string
creates a model named home
with attribute name
. To remove the files and code generated from that command we can use
rails d model Home
If you use Rails, use rails d controller Users
.
And, if you use Zeus, use zeus d controller Users
.
On the other hand, if you are using git or SVN, revert your changes with the commit number. This is much faster.
You can destroy all things that was created same way except little thing change. For controller,
rails d controller_name (d stands for destroy)
For Model
rails d model_name
you just put d(destroy)
instead of g(generate)
in your migration.
If you prefer to delete the controller manually:
For controller 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
You can revert your
rails g/generate controller/model/migration xxx
output by using:
rails d/destroy controller/model/migration xxx
Suppose I have created a controller named "sample" like:
rails generate controller sample
If I have to destroy this controller, all I have to do is swap generate
with destroy
, as in
rails destroy controller sample.
If you want to reverse the generation, all you have to do is swap generate
with destroy
.
You can undo a rails generate
in the following ways:
For the model: rails destroy MODEL
For the controller: rails destroy controller_name
Before reverting the rails generate
, please make sure you rollback the migration first.
Case 1: if you want to revert scaffold then run this command:
rails destroy scaffold MODEL_NAME
Case 2: if you want to revert model then run this command:
rails destroy model MODEL_NAME
Case 3: if you want to revert controller then run this command:
rails destroy controller CONTROLLER_NAME
Note: you can also use shortcut d
instead of destroy
.
To reverse rails generate
, use rails destroy
:
rails destroy Model
See "rails destroy
" for more information.
To reverse that, we just destroy it. Open the Terminal application and go to the project directory, then, type this:
rails destroy model CamelCase
rails destroy controller CamelCase
Where CamelCase
is a name of any model or controller. It will remove the model, migration and some of the related test files. (You can see the result in the Terminal window after you have run the command.)
All versions of rails have a "destroy", so-, if you create a (for example) scaffold named "tasks" using a generator, to destroy all the changes of that generate step you will have to type:
rails destroy scaffold Tasks
Hope it helps you.
We use generate as rails generate app
. So regenerating any generate
statement can be reversed using destroy
statement. Just replace generate
with destroy
i.e. rails generate app
can be written as rails destroy app'
rails generate ____as
rails destroy ____`
Removed scaffolding for selected model:
bin/rails d scaffold <AccessControl> //model name
Success story sharing
rails destroy scaffold lalalal
and that worked.rails generate <gemname>:install
-f
flag to force it to recreate/reedit the files… Then you can see which files it created/changed, and proceed on manually deleting them.