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

3

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

我正在使用TextMate,这是否只需使用替换功能并将单词“Post”替换为“Report”即可?


你已经有代码了还是只是运行了生成器? - corroded
5个回答

7
你需要更改控制器和相关的模型视图辅助函数测试路由目录、文件名、类名以及类定义中的名称。
我发现有两种方法可以做到这一点,但在尝试任何操作之前,我建议你备份你的应用程序,最好使用Git和Github.com等软件版本控制系统进行备份。
第一种选择是手动更改,这里有一个很好的解释:如何在项目中重命名rails控制器和模型
另一种方法是"destroy"您的控制器和模型,然后"generate"一个新的控制器和模型,这将删除第一次生成的所有文件并用新的替换它们。Michael Hartl在他的Ruby on Rails在线指南中很好地解释了这个解决方案:http://ruby.railstutorial.org/chapters/static-pages#sidebar-undoing_things 当我需要用一个名为"product"的新MVC框架替换我生成的"board"框架时,我遵循了这个解决方案。
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 中,并在文本编辑器中进行了一次查找和替换,将board替换为product

我认为第二个选项更可靠且更快,但在您对代码进行太多手动更改之前,及早进行此更改非常重要。最好在开始项目之前花费更多时间规划您的MVC名称和数据库表。


3

2

1
如果您正在使用TextMate,请使用“command-shift-f”在整个项目中查找字符串。

0

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


而且,您可能还想重命名控制器中的变量,特别是如果您正在使用期望特定命名约定的部分视图。 - douglasr

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