22

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

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

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

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

4

1 に答える 1

55

実際にrake db:migrateこの移行が可能になったとは思えないので、ロールバックする必要はありません。下の3つを削除しadd_column、上の1つを次のように置き換えるだけです。

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

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

rails generate migration add_reaction_id_to_patient_allergies reaction_id:integer

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

于 2013-03-18T16:21:50.007 に答える