如何重命名ActiveRecord模型,该模型可以自动更改DB中的表名?

Mel*_*lon 15 ruby-on-rails ruby-on-rails-3

我有一个Active Record模型"car",我想将这个模型的名称更改为"train" 而不改变其中的功能,这只会改变名称.此外,表名应更改为"train".

是否有任何rails命令可以在onece上执行此操作?或者我必须手动更改类或迁移中的名称?如果我必须手动更换,那将会很复杂,因为我还必须更改与我的"汽车"模型有关联的其他模型.

有什么好建议吗?

Mel*_*lon 33

我想出了以下方法:

1,生成迁移文件:

rails generate migration rename_cars_to_trains
Run Code Online (Sandbox Code Playgroud)
  1. 将创建的迁移文件编辑为:

    class RenameCarsToTrains < ActiveRecord::Migration
      def self.up
        rename_table :cars, :trains
      end
    
      def self.down
        rename_table :trains, :cars
      end
    end
    
    Run Code Online (Sandbox Code Playgroud)
  2. rake db:migrate

在这些步骤之后,表名从汽车变为火车,然后,我必须手动更改控制器并查看名称和关联...

如果您有更有效的方式,请告诉我......


had*_*ade 18

我会推荐以下内容:

1)将Active Record模型类手动更改为Train

2)进行迁移以将数据库表名称从汽车更改为火车

3)进行良好的搜索以更改从汽车到火车的参考.

如果您经常需要更改数据库表名称,则可能需要重新考虑以更抽象的方式命名表.就像在这种情况下你可以有一个叫做车辆的表,并有"type"字段指定类型(例如:汽车或火车).