撤消Rails中的脚手架


493

有什么方法可以在Rails中“撤消”脚手架命令的影响吗?


4
铁轨摧毁脚手架xxx
罗宾·加格

1
在Rails 5中:使用以下命令生成支架:$ rails生成支架<名称>。如果迁移了文件,请执行回滚:$ rake db:rollback。使用以下命令销毁或撤消脚手架:$ rails销毁脚手架<名称>。您可以在
Nesha Zoric '18

Answers:


777

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

rake db:rollback

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

rails generate scaffold MyFoo 

(或类似),您可以使用删除/撤消

rails destroy scaffold MyFoo

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


11
rake db:rollback在破坏脚手架之前,请不要忘记。如果没有其他迁移,除了脚手架之前的迁移,这将破坏/删除表。
Yakob Ubaidi 2014年

3
在某些情况下,仍然存在尚未从支架中删除的剩余文件。检查您的版本控制,例如git status和/或git diff,以查看destroy命令是否丢失了任何内容。
aaron编码

1
如果您运行rake db:migrate之后还进行了其他一些迁移,那么在“销毁”支架之前创建一个迁移以销毁表是有意义的。因此,请执行rails g migration DropMyFoos之类的操作,然后打开迁移文件并添加用于删除表的代码。运行此迁移,然后运行销毁支架。
Vikram Sharma

还要记住,即使那里有多余的文件,它也会删除my_foo的view文件夹。
安德鲁K

167

Rishav Rastogi是正确的,并且在rails 3.0或更高版本中:

轨道产生支架...
铁轨破坏脚手架...

8
@femi桌子是用耙子做成的。删除它的最佳方法是在运行rake db:rollback之前,rails destroy scaffold或者如果它不是您耙过的最后一个db:migrate:down VERSION=20080906120000,则可以在db / migrate中找到其名称之前的编号
Travis Pessetto 2011年

40

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

rails generate xxx

通过

rails destroy xxx

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


13

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


10

最好的方法是:

destroy rake db:  rake db:rollback

对于脚手架:

rails destroy scaffold Name_of_script

8
rails d scaffold <scaffoldname>

另外,请确保撤消通过回滚或特定版本进行的迁移。


8

第一次,您可以检查数据库迁移是否已生成支架。您必须销毁它们以清理数据库

rake db:rollback

然后

rails d scaffold

4

生成脚手架:

rails generate scaffold xyz

还原脚手架:

rails destroy scaffold xyz




2

因此,您应该遵循Process来撤消rails 4中的脚手架。运行Command如下:

  1. rails d scaffold FooBar
  2. rake db:rollbackrake db:migrate创建完上述脚手架后,you_had_run_是否?

而已!

干杯!


2

推荐回滚首先,在您的终端中输入。

rake db:rollback

添加销毁支架(“ d”代表“ destroy”)

rails d scaffold name_of_scaffold

享受您的代码。


1

用这个

rails d scaffold MODEL_NAME

rake db:rollback

1

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

rails d脚手架型号


1

您需要先通过执行rake db:rollback来回滚迁移,然后通过以下方法销毁支架:

rails d scaffold foo

1

是的,它scaffold本身以及将其融合在一起的所有事物。

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

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

1

生成支架:

rails generate scaffold abc

还原此脚手架:

rails destroy scaffold abc

如果您已经运行了迁移,只需回滚

rake db:rollback STEP=1

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

1

rails [option]支架scaffold_name

选项

g    generate
d    destroy

如果你这样做

rails g  scaffold myFoo

然后使用

rails d scaffold MyFoo

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

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


0

每次运行时rails g,都可以通过运行rails d(销毁)以删除生成的内容来撤消它。如果您已经运行rake db:migrate,则需要rake db:rollback在销毁之前运行:)


0

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.