如何扭转“轨道产生”


471

我想删除它创建的所有文件,并回滚所做的任何更改,但不一定要对数据库进行更改,而要对配置文件进行更多更改。

我想自动删除在routes.rb文件中删除的模型/控制器以及可能进行了其他更改的所有其他资源映射?

Answers:


929
rails destroy controller lalala
rails destroy model yadayada
rails destroy scaffold hohoho

Rails 3.2 d为命令添加了新的快捷方式,因此现在您可以编写:

rails d controller lalala
rails d model yadayada
rails d scaffold hohoho

1
顺便说一句,如何使用此命令删除脚手架?模型和控制器工作正常...但是如何完全颠倒支架?
marcamillion

6
好的,我知道了。也许我在模糊某些东西。我刚跑rails destroy scaffold lalalal了就行了。
marcamillion

38
@marcamillion一定是那个额外的“ L”。
varatis 2012年

1
如何删除与gem安装相关的文件,例如rails generate <gemname>:install
doug

2
@doug,我认为不可能。最好的选择是重新运行带有-f标志的生成器,以强制其重新创建/重新编辑文件…然后,您可以查看它创建/更改的文件,并继续手动删除它们。
法比奥·巴蒂斯塔

49

值得一提的是-p这里的标志(假装为“ p” )。

如果将其添加到命令中,它将仅执行“测试”运行,并向您显示将删除哪些文件而没有实际删除它们。

$ 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

如果对此感到满意,请再次运行不带-p标志的命令。


我认为这是最好的答案
EmilReñaEnriquez

24

rails destroy controller Controller_name返回了很多错误。为了能够销毁控制器,我必须在route.rb中删除相关的路由。PS我正在使用rails 3.1


除非您打算将此答案作为选定的正确答案,否则请不要总结您的操作。
锡人

11

这是在Rails中生成或破坏控制器或模型的原型:

rails generate/destroy controller/model [controller/model Name]

例如,如果您需要生成用户控制器:

rails generate controller User

要么

rails g controller User

如果要销毁用户控制器或恢复上述操作,请使用:

rails destroy controller User

要么:

rails d controller User

在此处输入图片说明


4

您可以使用rails d model/controller/migration ...销毁或删除使用rails generate命令生成的更改。

例如:

rails g model Home name:string

创建一个名为homeattribute 的模型name。要删除该命令生成的文件和代码,我们可以使用

rails d model Home

3

您可以销毁所有以相同方式创建的事物,只有很少的改变。对于控制器,

rails d controller_name (d stands for destroy)

对于模型

rails d model_name

您只是放入d(destroy)而不是g(generate)在迁移中。


3

如果您希望手动删除控制器:

对于控制器 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

3

您可以还原您的

rails g/generate controller/model/migration xxx

使用以下命令输出:

 rails d/destroy controller/model/migration xxx

3

假设我创建了一个名为“ sample”的控制器,例如:

rails generate controller sample

如果我必须销毁该控制器,则要做的就是generate与交换destroy,如

rails destroy controller sample.

如果您想逆转一代,您要做的就是generate与交换 destroy


3

如果您使用Rails,请使用 rails d controller Users

而且,如果您使用宙斯,请使用 zeus d controller Users

另一方面,如果您使用的是git或SVN,请使用提交号还原更改。这要快得多。



1

为了扭转这种情况,我们只是将其销毁。打开终端应用程序,然后转到项目目录,然后键入:

rails destroy model CamelCase
rails destroy controller CamelCase

CamelCase任何模型或控制器的名称在哪里。它将删除模型,迁移和一些相关的测试文件。(运行命令后,您可以在“终端”窗口中查看结果。)


0

我们将generate用作 rails generate app。因此,generate使用destroy语句可以反转任何语句的生成。只需替换generatedestroy ie rails generate app即可写成 rails destroy app' rails生成____ asrails销毁____`


0

删除了所选型号的脚手架:

bin/rails d scaffold <AccessControl> //model name

0

还原之前rails generate,请确保您回滚迁移

情况1:如果要还原支架,请运行以下命令:

rails destroy scaffold MODEL_NAME

情况2:如果要还原模型,请运行以下命令:

rails destroy model MODEL_NAME

情况3:如果要还原控制器,请运行以下命令:

rails destroy controller CONTROLLER_NAME

注意:您也可以使用快捷方式d代替destroy


0

要反转rails generate,请使用rails destroy

rails destroy Model

有关rails destroy更多信息,请参见“ ”。


0

所有版本的rails都有一个“ destroy”,因此,如果您使用生成器创建一个名为“ tasks”的(例如)脚手架,则要破坏该生成步骤的所有更改,您将必须输入:

rails destroy scaffold Tasks

希望对您有帮助。

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.