15

すでにいくつかの列を持つunitsというテーブルを移行しました。cmdを使用してスタンドアロンの「add_index」でこのテーブルに移行する方法を考えていました。このコードは正しいですか:

class AddIndexToUnits < ActiveRecord::Migration
  def self.up
    add_index :units, :lesson_id
  end

  def self.down
    remove :units
  end
end

self.downが間違っている可能性があると感じていますが、よくわかりません。

4

3 に答える 3

14

self.upメソッドは正しいです。あなたのself.downのためにこれを使用してください:

remove_index :units, :column => :lesson_id
于 2011-05-24T09:29:44.170 に答える
10

ほとんど

class AddIndexToUnits < ActiveRecord::Migration
  def self.up
    add_index :units, :lesson_id, :name=>'lesson_index'
  end

  def self.down
    remove_index :units, 'lesson_index'
  end
end
于 2011-05-24T09:31:12.697 に答える
2

インデックスを削除するにはremove_index、self.upと同じテーブルと列の仕様を使用する必要がありますadd_index。それで:

def self.down
  remove_index :units, :lesson_id
end

複数列のインデックスの例は次のようになります。

def self.down
  remove_index :units, [:lesson_id, :user_id]
end
于 2011-05-24T09:39:08.640 に答える