12
テーブルの特定の列の後に列をテーブルに追加しようとしました。ここ は私がやったことです:ここでは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
私はコマンドがうまくいったと思ういけません。上記のファイルに '='があります。私はそこにすべきだとは思わない。誰かが私が何かを見逃したら教えてもらえますか?
もしそうなら、私はどのように上記を元に戻すことができますか?
@michaelこの素晴らしい答えにもう一つ追加するだけで、成功しているが望ましくない移行を元に戻すには、rake db:rollbackを実行することができます。これは、最新の移行を元に戻します。それを繰り返すことでさらに後ろに歩むことができます。私はしばしば、デフォルト値やカラムの順番を設定するなどの小さな微調整を元に戻すことに気づきます。 – Polsonby
':after'オプションは[API documentation](http://api.rubyonrails.org/classes)には含まれていません。 /ActiveRecord/Migration.html)、少なくともRails 4.2.3では試行後に見つかった:移行はうまくいったが、注文は適用されなかった。 – nandinga
@nandinga最新のRailsで[ColumnDefinition](https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb#L13)クラスがサポートされているようです'after'オプションもありますが、私はRailsの最後のリリースでこれをテストしていません。 – piersadrian