web-dev-qa-db-ja.com

ruby on Rails特定の列名の後に列を追加する

テーブル内の特定の列の後に、テーブルに列を追加しようとしました。これが私がしたことです:

Rails generate migration add_reaction_id_to_patient_allergies reaction_id: integer :after => 'patient_id'

移行ファイルは次のようになります。

class AddReactionIdToPatientAllergies < ActiveRecord::Migration
  def change
    add_column :patient_allergies, :reaction_id, :string
    add_column :patient_allergies, :integer, :string
    add_column :patient_allergies, :, :after
    add_column :patient_allergies, :=, :string
  end
end

コマンドがうまくいったとは思わない。上記のファイルに「=」があります。そこにあるべきではないと思います。私が何かを逃したかどうか誰かに教えてもらえますか?

もしそうなら、どうすれば上記を元に戻すことができますか?

16
Micheal

実際にrake db:migrateこの移行なので、ロールバックする必要はありません。下の3つを削除するだけですadd_columnsそして一番上のものをに置き換えます

add_column :patient_allergies, :reaction_id, :integer, after: :patient_id

移行しても問題ないはずです。後で参照できるように、入力したコマンドは次のようになります。

Rails generate migration add_reaction_id_to_patient_allergies reaction_id:integer

integerの前のスペースは、ジェネレーターにそれが新しい列であると思わせました。残念ながら、Ruby構文(a => b)コマンドラインでも。

47
piersadrian