我有一个Active Record模型“car”,我想将此模型的名称更改为“训练”而不更改内部功能,仅更改名称。此外,表名应更改为“train”。
是否有任何rails命令可以在onece上执行此操作?或者我必须手动更改类或迁移中的名称?如果我必须手动更换,那将会很复杂,因为我还必须更改与我的“汽车”模型有关联的其他模型。
有什么好的建议吗?
答案 0 :(得分:31)
我想出了以下方法:
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
完成这些步骤后,表名从汽车变为火车,然后,我必须手动更改控制器并查看名称和关联......
如果您有更有效的方式,请告诉我......
答案 1 :(得分:18)
我会推荐以下内容:
1)将Active Record模型类手动更改为Train
2)进行迁移以将数据库表名称从汽车更改为火车
3)进行良好的搜索以更改从Car到Train的引用。
如果您经常需要更改数据库表名称,则可能需要重新考虑以更抽象的方式命名表。就像在这种情况下你可以有一个叫做车辆的表,并有“type”字段指定类型(例如:汽车或火车)。
答案 2 :(得分:3)
我使用以下步骤重命名我的模型
在崇高的文字中:
手动更改以下文件名
更改视图中的文件夹名称:汽车到火车
答案 3 :(得分:0)
如果您使用的是RubyMine,请进入模型,右键单击类名称>重构并更改名称。 RubyMine将重构所有内容,并为数据库创建新的迁移。