502

有什么方法可以“撤消”Rails 中脚手架命令的效果?

4

24 回答 24

799

首先,如果您已经运行了scaffold命令生成的迁移,则必须先执行回滚。

rake db:rollback

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

rails generate scaffold MyFoo 

(或类似的),您可以使用销毁/撤消

rails destroy scaffold MyFoo

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

于 2009-06-08T05:05:27.690 回答
167

Rishav Rastogi 是对的,并且使用 rails 3.0 或更高版本:

rails 生成脚手架 ...
铁轨破坏脚手架...
于 2010-10-05T01:54:56.327 回答
40

您可以撤消您所做的任何事情

rails generate xxx

经过

rails destroy xxx

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

于 2011-06-27T09:13:27.203 回答
13

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

于 2010-09-28T22:17:02.213 回答
10

最好的方法是:

destroy rake db:  rake db:rollback

对于脚手架:

rails destroy scaffold Name_of_script
于 2011-09-06T05:40:14.007 回答
9

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

rake db:rollback

然后

rails d scaffold
于 2013-09-25T02:26:15.040 回答
8
rails d scaffold <scaffoldname>

此外,请确保撤消通过回滚或到特定版本所做的迁移。

于 2013-11-30T17:14:43.793 回答
4

生成脚手架:

rails generate scaffold xyz

要恢复脚手架:

rails destroy scaffold xyz
于 2014-02-26T10:16:16.733 回答
4

Rails 破坏名称

rake db:rollback
于 2015-07-21T16:14:25.423 回答
3

用于在铁轨中生成脚手架 -

rails generate scaffold MODEL_GOES_HERE

用于撤消导轨中的脚手架 -

rails destroy scaffold MODEL_GOES_HERE
于 2015-05-07T10:56:50.867 回答
2

在销毁脚手架后,您也需要回滚迁移

rails destroy scaffold 'scaffoldname'
rake db:rollback
于 2014-07-16T14:40:14.207 回答
2

因此,您应该按照流程撤消rails 4中的脚手架。运行命令如下:

  1. rails d scaffold FooBar
  2. rake db:rollbackrake db:migrate如果你在创建上面的脚手架之后_had_run_ ?

而已!

干杯!

于 2015-05-20T07:41:58.323 回答
2

推荐回滚首先,输入你的终端。

rake db:rollback

添加销毁脚手架(“d”代表“销毁”)

rails d scaffold name_of_scaffold

享受您的代码。

于 2016-05-14T01:02:45.077 回答
2

用这个

rails d scaffold MODEL_NAME

rake db:rollback
于 2015-12-24T13:39:25.640 回答
1

您需要先通过执行 rake db:rollback if any 来回滚迁移,然后通过以下方式销毁脚手架

rails d scaffold foo
于 2014-03-21T09:46:50.313 回答
1

rails [option] scaffold scaffold_name

Option

g    generate
d    destroy

If you do

rails g  scaffold myFoo

Then reverse it back using

rails d scaffold MyFoo
于 2017-09-30T17:01:14.737 回答
1

提供另一种基于 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
于 2017-08-16T07:49:42.413 回答
1

要生成脚手架:

rails generate scaffold abc

要还原此脚手架:

rails destroy scaffold abc

如果您已为其运行迁移,则只需回滚

rake db:rollback STEP=1
于 2017-04-11T05:07:19.507 回答
1

首先, 如果您已经运行rake db:migrate ,则必须执行rake db:rollback来销毁表,然后您可以运行

rails d 脚手架型号

于 2016-01-13T06:45:05.900 回答
1

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

destroy命令是相反的generate,将撤消一个。只需以相同的方式传递它的名称generate,它就会从您的项目中删除:

rails generate scaffold posts title:string content:text
rails destroy scaffold posts title:string content:text
于 2017-01-15T03:58:40.177 回答
0
rails g scaffold MyFoo 

用于生成和

rails d scaffold MyFoo

用于去除

于 2017-08-08T14:17:31.120 回答
0

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

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

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

于 2016-09-05T06:46:58.360 回答
0

案例一:如果只运行这个命令生成脚手架——

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生成作为快捷方式。

于 2017-02-10T17:48:53.713 回答
0

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

于 2016-12-23T16:14:39.703 回答