Rails迁移的烦人问题

时间:2016-05-14 11:39:03

标签: ruby-on-rails database-migration

这不是一个问题,但更像是一个烦人的步骤,每次我犯错误都要重复。我创建了一个像这样的迁移:

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表以及所有索引以及之前的迁移。回到数据库并手动放下桌子很烦人,我不知道我做错了什么或有更好的方法。

0 个答案:

没有答案