我知道有
rename_column
变换,但好像rename_index
不存在。
我必须使用
remove_index
和 add_index
来代替吗?
rename_index
应给出字符串而不是符号。
rename_index :table_name, 'old_name', 'new_name'
在尝试重命名表及其索引时,让我摸不着头脑。 Rails 3.2.3 和 MySQL。
Rails 3 提供了重命名索引的快捷方式:
rename_index :table_name, :old_name, :new_name
http://guides.rubyonrails.org/migrations.html
顺便说一下,它只不过是删除旧的并添加新的:
http://apidock.com/rails/v2.3.8/ActiveRecord/ConnectionAdapters/SchemaStatements/rename_index
从 Rails 5 开始(编辑:也在 Rails 4 中),重命名列也会自动重命名索引。
您也可以在迁移中执行任意 SQL。
我们有一些辅助方法可以将外键添加到我们的表中:
def add_foreign_key(from_table, from_column, to_table)
constraint_name = "fk_#{from_table}_#{from_column}"
execute %{alter table #{from_table}
add constraint #{constraint_name}
foreign key (#{from_column})
references #{to_table}(id)
}
end
您可以使用数据库支持的任何 SQL。