这不是一个问题,但更像是一个烦人的步骤,每次我犯错误都要重复。我创建了一个像这样的迁移:
class CreateSubmissions < ActiveRecord::Migration
def change
create_table :submissions do |t|
t.references :student, index: true, foreign_key: true
t.references :assignment, index: true, foreign_key: true
t.references :question, index: true, foreign_key: true
t.text :code
t.timestamps null: false
end
add_index :submissions, [:student_id, :assignment_id, :question_id], unique: true
end
end
尝试擦rake db:migrate
并且它给我一个错误,索引名称太长而且更多,我将该行更改为此
add_index :submissions, [:student_id, :assignment_id, :question_id],
unique: true, name: 'index_submissions'
然后再次尝试执行rake db:migrate
它给我submission_student_index
已经存在的错误(因为它第一次创建表但在添加索引时抛出异常)我试图回滚以便我可以一起执行整个submissions
表和索引,但不幸的是它回滚了我以前的迁移(在某些情况下是前一个表或索引或列)。
为此,我必须手动转到数据库并删除该submissions
表,然后执行rake db:migrate
以创建submissions
表以及所有索引以及之前的迁移。回到数据库并手动放下桌子很烦人,我不知道我做错了什么或有更好的方法。