Rails表名重命名求助:将custom.students改为custom.class_one_students
Rails 重命名带Schema的数据库表
生成迁移文件
先创建迁移文件:
rails generate migration RenameStudentsToClassOneStudents
编写迁移逻辑
由于表位于custom schema下,直接用Rails默认rename_table可能因schema解析问题失败,推荐两种可靠写法:
方法1:使用原生SQL(最稳妥)
编辑生成的迁移文件,在change方法中执行SQL重命名语句:
def change execute <<-SQL ALTER TABLE custom.students RENAME TO custom.class_one_students; SQL end
方法2:使用Rails的rename_table方法
若偏好ORM方法,需用字符串包裹完整的带schema表名:
def change rename_table "custom.students", "custom.class_one_students" end
更新关联模型(如有)
如果项目中有Student模型,需同步修改表名关联:
class Student < ApplicationRecord self.table_name = "custom.class_one_students" end
若要同步修改模型名为ClassOneStudent,记得重命名模型文件(student.rb → class_one_student.rb)并更新类名,再设置对应表名。
执行迁移
最后运行迁移生效:
rails db:migrate
内容的提问来源于stack exchange,提问作者Foram
相关产品推荐
相关产品推荐

