如何重命名ActiveRecord模型,它可以自动更改数据库中的表名?
我有一个Active Record模型“car”,我想将这个模型的名称更改为“train” 而不改变其中的function,这只会改变名称。 此外,表名应更改为“train”。
是否有任何rails命令可以在onece上执行此操作? 或者我必须手动更改类或迁移中的名称? 如果我必须手动更换,那将会很复杂,因为我还必须更改与我的“汽车”模型有关联的其他模型。
有什么好建议吗?
我会推荐以下内容:
1)将Active Record模型类手动更改为Train
2)进行迁移以将数据库表名称从汽车更改为火车
3)进行良好的搜索以更改从汽车到火车的参考。
如果您不断需要更改数据库表名称,则可能需要重新考虑以更抽象的方式命名表。 就像在这种情况下,您可以拥有一个名为vehicles的表,并使用“type”字段指定类型(例如:汽车或火车)。
我想出了以下方法:
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
-
rake db:migrate
在这些步骤之后,表名从汽车改为火车,然后,我必须手动更改控制器并查看名称和关联...
如果您有更有效的方式,请告诉我......
我使用以下步骤重命名我的模型
在崇高的文字中:
- 按cmd + shift + find并选择区分大小写的搜索(参见左侧按钮)。 它将在整个项目中搜索单词
- 搜索并将’Cars’替换为’Trains’
- 搜索并将’Car’替换为’Train’
- 搜索并将’car’替换为’train’
- rails生成迁移rename_cars_to_trains
-
手动更改以下文件名
- cars_controller
- car_helper
- 型号/ car.rb.
- 测试文件夹中的所有相关文件
-
更改视图中的文件夹名称:汽车到火车