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

Posted

技术标签:

【中文标题】Rails:重命名控制器和相应的模型【英文标题】:Rails: renaming a controller and corresponding model 【发布时间】:2011-08-06 01:41:12 【问题描述】:

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

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

【问题讨论】:

你已经有代码还是刚刚运行生成? 【参考方案1】:

您需要更改Controller的名称以及关联的ModelViewsHelpers、Tests & Routes 目录、文件名、类名和类定义中的名称。

我找到了两种方法来做到这一点,但在您尝试任何方法之前,我建议您备份您的应用,最好使用 Git 和 Github.com 等软件版本控制系统。

您的第一个选择是手动完成,这里有一个很好的解释:How to rename rails controller and model in a project

另一种方法是 destroy 你的控制器和模型,然后 generate 一个新的,这将删除第一次生成的所有文件并用新文件替换它们。 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 中并做了 在我的文本编辑器中查找并替换这个文件,用product替换board

我认为第二个选项更可靠、更快捷,但在对代码进行过多手动更改之前,在项目早期进行此更改非常重要。在开始项目之前,最好花一点时间正确规划 MVC 名称和数据库表。

【讨论】:

【参考方案2】:

您还可以使用 rails_refactor gem 重命名控制器、模型等 更多信息请查看https://github.com/jcrisp/rails_refactor

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

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

【讨论】:

而且您可能还想重命名控制器中的变量,特别是如果您使用的是需要特定命名约定的部分。

以上是关于Rails:重命名控制器和相应的模型的主要内容,如果未能解决你的问题,请参考以下文章

在控制器中找不到命名空间内的 Ruby on Rails 模型

如何避免 Rails 脚手架将模型放入命名空间

在 Rails JSON 序列化中重命名模型关联属性?

如何编写迁移以重命名 Rails 中的 ActiveRecord 模型及其表?

如何在 Rails 4 中使用关注点

git status 显示重命名但不正确