撤消Rails中的脚手架

有没有办法在Rails中“撤销”脚手架命令的效果?

145427 次浏览

第一个,如果你已经运行了由scaffold命令生成的迁移,你必须先执行回滚。

rake db:rollback

你可以使用以下方法创建脚手架:

rails generate scaffold MyFoo

(或类似),并使用你可以销毁/撤销

rails destroy scaffold MyFoo

这将删除由generate创建的所有文件,但不会删除您手动进行的任何其他更改。

如果您只想查看生成器将创建的文件,您可以传递generator -pretend或-p选项。

Rishav Rastogi是对的,rails 3.0或更高版本:

rails generate scaffold ...
rails destroy scaffold ...

你可以撤销你所做的一切

rails generate xxx

通过

rails destroy xxx

例如,它将生成器应用于迁移、脚手架、模型等

最好的方法是:

destroy rake db:  rake db:rollback

支架:

rails destroy scaffold Name_of_script

第一次,你可以检查你的数据库迁移,如果你有生成脚手架。 您必须销毁它们以清理数据库

rake db:rollback

然后

rails d scaffold
rails d scaffold <scaffoldname>

此外,请确保通过回滚或到特定版本撤销了迁移。

要生成脚手架:

rails generate scaffold xyz

恢复脚手架:

rails destroy scaffold xyz

您需要首先执行rake db:rollback(如果有的话)来回滚迁移 然后通过

破坏脚手架
rails d scaffold foo

你也需要在摧毁脚手架后回滚迁移

rails destroy scaffold 'scaffoldname'
rake db:rollback

用于在轨道中生成脚手架

rails generate scaffold MODEL_GOES_HERE

用于在轨道上撤消脚手架-

rails destroy scaffold MODEL_GOES_HERE

因此,您应该遵循Process来撤销rails 4中的脚手架。执行如下命令:

  1. rails d scaffold FooBar
  2. rake db:rollback如果你在创建上面的脚手架后运行了abc1 ?

就是这样!

干杯!

Rails销毁名称

rake db:rollback

使用这个

rails d scaffold MODEL_NAME


rake db:rollback
首先,你必须执行rake db:回滚来销毁
的表 如果你已经运行了rake db: migrate,那么你可以运行

导轨d脚手架

建议回退首先,键入您的终端。

rake db:rollback

添加破坏脚手架(“d”代表“destroy”)

rails d scaffold name_of_scaffold

享受你的代码。

当我们生成脚手架时,会创建以下文件:

命令: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

该命令将删除项目中由脚手架创建的所有文件。

任何时候你运行rails g,你都可以通过运行rails d (destroy)来删除你所生成的东西来反转它。如果你已经运行了rake db:migrate,你将需要在销毁之前运行rake db:rollback:)

是的,scaffold本身和所有合并它的东西。

destroy命令与generate相反,它将撤销其中一个命令。只需要像generate一样传递它的名字,它就会从你的项目中删除:

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

案例1:如果你只运行这个命令来生成脚手架-

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:如果你已经通过以下命令运行(脚手架和迁移),比如-

rails generate scaffold User name:string address:text


rake db:migrate

然后你应该首先运行回滚迁移命令,然后像下面那样破坏脚手架

rake db:rollback


rails destroy scaffold User name:string address:text

以这种方式,我们可以撤销脚手架。我们也可以用d代替摧毁,用g代替生成

要生成脚手架:

rails generate scaffold abc

恢复脚手架:

rails destroy scaffold abc

如果您已经为它运行了迁移,只需回滚即可

rake db:rollback STEP=1
rails g scaffold MyFoo

用于生成和

rails d scaffold MyFoo

为消除

提供了另一种基于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

Rails [option] scaffold脚手架名称

选项

g    generate
d    destroy

如果有的话

rails g  scaffold myFoo

然后反向使用

rails d scaffold MyFoo

生成:

rails g scaffold post
rake db:migrate

删除:

rake db:rollback
rails d scaffold post