我已经创建了此迁移文件,并且已运行迁移。
class CreateStudentContexts < ActiveRecord::Migration
def change
create_table :student_contexts do |t|
t.string :student_id, index: true, null: false, limit: 40
t.text :data
t.timestamps null: false
t.index [:student_id, :updated_at], unique: true, name: 'student_context_index'
end
end
end
现在我想创建一个新的迁移文件来更新索引,索引字段应该是student_id和created_at。
答案 0 :(得分:2)
您可以创建另一个迁移并更改表格。像
这样的东西class MyMigration < ActiveRecord::Migration
def change
remove_index :student_contexts, :updated_at
add_index :student_contexts, :created_at
end
end
会做的。
答案 1 :(得分:2)
这个问题有点陈旧,但万一有人碰到它:
Justin Wood的答案应该有效,但只需更改一次:将remove_index方法中的列名替换为索引名称:
remove_index :student_contexts, name: 'student_context_index'
创建索引时,会为其指定一个带有name
参数的特定(非标准)名称,因此您还需要在name
语句中使用remove_index
参数。否则,Rails希望索引具有标准名称(在本例中为“index_student_contexts_on_updated_at”)。