Rails:重命名控制器和相应的模型

时间:2011-04-15 05:13:27

标签: ruby-on-rails rename batch-rename

是否有一种简单的方法可以在我的应用程序中重命名控制器和模型以及相应代码中的所有实例?

我正在使用textmate,这是否就像使用replace函数并将Post一词替换为Report一样简单?

5 个答案:

答案 0 :(得分:7)

您需要更改控制器的名称以及关联的模型视图帮助,< strong>测试&amp; 路线目录,文件名,类名&amp;类定义中的名称。

我找到了两种方法可以做到这一点,但在您尝试任何操作之前,我建议您备份您的应用,最好使用像Git&amp ;;这样的软件版本控制系统。 Github.com。

您的第一个选择是手动执行此操作。这里有一个很好的解释:How to rename rails controller and model in a project

另一种方法是destroy你的控制器&amp;模型,然后generate一个新的,这将删除第一次生成的所有文件&amp;用新的替换它们。 Michael Hartl在他的Ruby on Rails在线指南中很好地解释了这个解决方案:http://ruby.railstutorial.org/chapters/static-pages#sidebar-undoing_things

这是我在需要对我的应用进行此更改时所遵循的解决方案,我需要将名为board的MVC脚手架替换为名为product的新脚手架。

<强> 1。第一

我对电路板视图布局中的工作进行了备份, app / views / boards / index.html.erb

<强> 2。然后

我在终端窗口中运行了以下rails命令。

$ rake db:rollback

$ rails destroy scaffold board name:string description:text image:string price:decimal

$ rails generate scaffold product product_type:string name:string description:text image:string price:decimal

$ rake db:migrate

第3。最后

我将备份的 boards / index.html.erb 文件复制到新生成的 app / views / products / index.html.erb &amp;做了发现&amp;在此文件的文本编辑器中替换,将board替换为product

我认为第二种选择更加可靠。更快,但在对代码进行过多手动更改之前,在项目的早期进行此更改非常重要。最好花一点时间来规划你的MVC名字和在启动项目之前正确地使用数据库表。

答案 1 :(得分:3)

您还可以使用 rails_refactor gem 重命名控制器,型号等 有关详情,请查看https://github.com/jcrisp/rails_refactor

答案 2 :(得分:2)

要重命名控制器和模型,请使用此gem https://github.com/jcrisp/rails_refactor

答案 3 :(得分:1)

如果您使用的是textmate,请使用'command-shift-f'在整个项目中查找字符串。

答案 4 :(得分:0)

是和否。您可以这样重命名,但您也需要重命名文件,否则Rails将不知道在哪里查找与新报表模型/控制器/等对应的文件。