Ruby on rails 如何重新命名ActiveRecord模型,该模型可以自动更改数据库中的表名?

Ruby on rails 如何重新命名ActiveRecord模型,该模型可以自动更改数据库中的表名?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有一个活动记录模型“car”,我想将此模型的名称更改为“train”,而不更改内部功能,即仅更改名称。此外,表名应更改为“trains” 有没有rails命令可以在onece上实现这一点?或者我必须手动更改类或迁移中的名称?如果我必须手动更改,这会很复杂,因为我还必须更改与我的“汽车”模型相关的其他模型 有什么好的建议吗?我建议如下: 手动将活动记录模型类更改为Train 进行迁移以将数据库表名称从cars更改为trains 进行良好的搜索,将参考资料从汽车更改为火车 如果您经常需要更改数据库

我有一个活动记录模型“car”,我想将此模型的名称更改为“train”,而不更改内部功能,即仅更改名称。此外,表名应更改为“trains”

有没有rails命令可以在onece上实现这一点?或者我必须手动更改类或迁移中的名称?如果我必须手动更改,这会很复杂,因为我还必须更改与我的“汽车”模型相关的其他模型


有什么好的建议吗?

我建议如下:

  • 手动将活动记录模型类更改为Train

  • 进行迁移以将数据库表名称从cars更改为trains

  • 进行良好的搜索,将参考资料从汽车更改为火车


  • 如果您经常需要更改数据库表名,那么您可能需要重新考虑以更简洁的方式命名表。像在本例中一样,您可以使用名为vehicles的表,并使用指定类型的“type”字段(例如:car或train)

    我想出了以下方法:

    1、生成迁移文件:

    rails generate migration rename_cars_to_trains
    
  • 将创建的迁移文件编辑为:

    class RenameCarsToTrains < ActiveRecord::Migration
      def self.up
        rename_table :cars, :trains
      end
    
      def self.down
        rename_table :trains, :cars
      end
    end
    
    类重命名carstotrains
  • rakedb:migrate

  • 在这些步骤之后,表名从cars更改为trains,然后,我必须手动更改控制器和视图的名称以及关联


    如果您有更有效的方法,请告诉我……

    我使用以下步骤重命名了我的模型

    在崇高的文本中:

  • 按cmd+shift+find并选择区分大小写的搜索(请参见左侧按钮)。它将在整个项目中搜索单词
  • 搜索并将“汽车”替换为“火车”
  • 搜索并将“汽车”替换为“火车”
  • 搜索并将“汽车”替换为“火车”
  • 轨道生成迁移重命名车到火车
  • 手动更改以下文件名

    • 汽车控制器
    • 汽车助手
    • Model/car.rb
    • 测试文件夹中的所有相关文件
  • 将视图中的文件夹名称更改为:汽车到火车


  • 如果您使用的是RubyMine,进入模型,右键单击类名>重构并更改名称。RubyMine将重构所有内容,并为数据库创建新的迁移。

    相应数据库表的名称是什么?是汽车还是火车?Rails遵循ORM映射,所以活动记录模型类应该映射到db表名中。我当前的表是“cars”,我想把它的名称改为“trains”。你的意思是我只需要将模型类名更改为“Train”?是的,这就是我在回答中解释的。我不在乎找到更有效的方法来反对Rails的惯例。从长远来看,你只会伤害自己。只需按照Rails的方式保持类和表名,就可以了。交换第一步和第二步是否明智?在应用程序实际运行时进行迁移,但之后再运行。是否真的要改变数据库名称,而不仅仅是表?@peter,你说得对。只有表名,而不是整个数据库。已更正。这将破坏以前的迁移文件。@MoB假设您的意思是它重命名以前迁移文件中的单词,只需使用任何现代编辑器功能排除目录即可。