【发布时间】:2011-05-08 20:42:09
【问题描述】:
我想删除它创建的所有文件并回滚所做的任何更改,但不一定是数据库,而是配置文件。
我想自动删除在 routes.rb 文件中删除的模型/控制器的所有资源映射以及可能已进行更改的其他任何位置?
【问题讨论】:
标签: ruby ruby-on-rails-3 rails-generate
我想删除它创建的所有文件并回滚所做的任何更改,但不一定是数据库,而是配置文件。
我想自动删除在 routes.rb 文件中删除的模型/控制器的所有资源映射以及可能已进行更改的其他任何位置?
【问题讨论】:
标签: ruby ruby-on-rails-3 rails-generate
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
【讨论】:
rails destroy scaffold lalalal 并且成功了。
rails generate <gemname>:install
-f 标志重新运行生成器以强制它重新创建/重新编辑文件……然后您可以查看它创建/更改了哪些文件,然后继续手动删除它们。
这里值得一提的是-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 标志。
【讨论】:
rails destroy controller Controller_name 返回一堆错误。为了能够销毁控制器,我必须删除 routes.rb 中的相关路由。附言我正在使用 Rails 3.1
【讨论】:
这是在 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
【讨论】:
您可以使用rails d model/controller/migration ... 来销毁或删除使用rails generate 命令生成的更改。
例如:
rails g model Home name:string
创建一个名为home 的模型,其属性为name。要删除从该命令生成的文件和代码,我们可以使用
rails d model Home
【讨论】:
如果您使用 Rails,请使用 rails d controller Users。
而且,如果您使用 Zeus,请使用 zeus d controller Users。
另一方面,如果您使用的是 git 或 SVN,请使用提交号恢复您的更改。这要快得多。
【讨论】:
你可以摧毁所有以相同方式创造的东西,除了一点点改变。 对于控制器,
rails d controller_name (d stands for destroy)
对于模型
rails d model_name
您只需在迁移中输入 d(destroy) 而不是 g(generate)。
【讨论】:
如果您希望手动删除控制器:
对于控制器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
【讨论】:
你可以恢复你的
rails g/generate controller/model/migration xxx
使用输出:
rails d/destroy controller/model/migration xxx
【讨论】:
假设我创建了一个名为“sample”的控制器,例如:
rails generate controller sample
如果我必须销毁这个控制器,我所要做的就是将generate 与destroy 交换,如
rails destroy controller sample.
如果你想反向生成,你所要做的就是把generate换成destroy。
【讨论】:
您可以通过以下方式撤消rails generate:
rails destroy MODEL
rails destroy controller_name
【讨论】:
要扭转这种情况,我们只需将其销毁即可。打开终端应用程序并转到项目目录,然后键入:
rails destroy model CamelCase
rails destroy controller CamelCase
其中CamelCase 是任何模型或控制器的名称。
它将删除模型、迁移和一些相关的测试文件。 (运行命令后,您可以在终端窗口中看到结果。)
【讨论】:
【讨论】:
我们使用生成作为
rails generate app。
所以重新生成任何generate 语句可以使用destroy 语句来反转。
只需将generate 替换为destroy
即rails generate app可以写成rails destroy app'
rails generate ____asrails destroy ____`
【讨论】:
移除所选模型的脚手架:
bin/rails d scaffold <AccessControl> //model name
【讨论】:
在还原 rails generate 之前,请确保您先回滚迁移。
案例1:如果你想恢复脚手架,那么运行这个命令:
rails destroy scaffold MODEL_NAME
案例 2:如果要还原模型,请运行以下命令:
rails destroy model MODEL_NAME
案例 3:如果你想恢复控制器然后运行这个命令:
rails destroy controller CONTROLLER_NAME
注意:您也可以使用快捷方式d 代替destroy。
【讨论】:
所有版本的 rails 都有一个“destroy”,因此,如果您使用生成器创建(例如)名为“tasks”的脚手架,要销毁该生成步骤的所有更改,您必须键入:
rails destroy scaffold Tasks
希望对你有帮助。
【讨论】: