Rails中如何撤销脚手架生成的代码

508
有没有一种方法可以“撤销”Rails中脚手架命令的影响?
25个回答

813

首先,如果你已经运行了scaffold命令生成的迁移操作,你需要先执行回滚操作。

rake db:rollback

您可以使用以下方式创建支架:

rails generate scaffold MyFoo 

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

rails destroy scaffold MyFoo

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


12
在销毁脚手架之前,别忘了运行 rake db:rollback 命令。如果除了脚手架迁移文件外没有其他迁移文件,该命令将销毁/删除数据表。 - Yakob Ubaidi
3
有些情况下,可能仍会有未从脚手架中删除的剩余文件。请检查您的版本控制,例如 git status 和/或 git diff,以查看销毁命令是否漏掉了什么。 - aaron-coding
1
如果你在运行了rake db:migrate之后进行了其他迁移,那么在“销毁”脚手架之前创建一个销毁表的迁移是有意义的。所以做一些像这样的事情 rails g migration DropMyFoos 然后打开迁移文件并添加删除表的代码。 运行此迁移,然后运行销毁脚手架。 - Vikram Sharma
请注意,即使您在my_foo文件夹中有额外的文件,这也会删除视图文件夹。 - Andrew K

168

Rishav Rastogi是正确的,对于rails 3.0或更高版本,它是:

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

8
@femi 这张表是用rake创建的。最好的移除方式是在运行rails destroy scaffold之前运行rake db:rollback,或者如果不是你最后一次创建的表,可以运行rake db:migrate:down VERSION=20080906120000,你可以在db/migrate文件夹中通过名称找到它之前的版本号。 - Travis Pessetto

40

您可以使用

undo

命令来撤销您所做的任何操作。

rails generate xxx

通过

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

13

如果你只是想查看生成器将创建的文件,可以通过向生成器传递--pretend或-p选项来实现。


10

最好的方式是:

destroy rake db:  rake db:rollback

针对 Scaffold:

rails destroy scaffold Name_of_script

9

第一次使用时,如果您已经生成了脚手架,请检查您的数据库迁移情况。您必须将它们销毁以清理您的数据库。

rake db:rollback

那么

rails d scaffold

8
rails d scaffold <scaffoldname>

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


4
生成脚手架:

要生成脚手架:

rails generate scaffold xyz

撤销脚手架:

rails destroy scaffold xyz

4

Rails destroy name

rake db:rollback

1
先回滚(如果您已经迁移),然后销毁脚手架。 - gavit

3

在Rails中生成脚手架的方法:

rails generate scaffold MODEL_GOES_HERE

在Rails中撤销脚手架的方法 -
rails destroy scaffold MODEL_GOES_HERE

2
还有快捷方式 rails grails d - steve klein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接