我有这样的表名"自定义。学生">在轨道上现在我想将其更改为"strong";custom.class_one_students">
我尝试了多种方法,但没有什么比迁移、sql和单引号更有效的了!
alter table <name> rename to <new name>
采用完全限定的表名,但新名称只是表。
ALTER TABLE custom.students RENAME TO class_one_students;
演示。
您可以在使用rename_table
的迁移中执行此操作。同样,只传递表名称作为新名称。
rename_table('custom.students', 'class_one_students')
请注意,新名称意味着这是一个单独班级的学生表,并且将有class_two_students
、class_three_students
等。这应该用students
、classes
和联接表来处理。
我已经阅读了这篇文档,对于自定义模式,使用search_path
在数据库中进行更改是有效的。这对我很有用!!
class ChangeStudentTable < ActiveRecord::Migration[5.2]
def up
execute(<<-SQL)
SET search_path TO custom;
ALTER TABLE custom.students RENAME TO custom.class_one_students;
SET search_path TO "$user", public;
SQL
end
end