0

私はSimutronXという最適化マシンのデータベースモデルを作成しています。私はデータベースキーの1つの変数名を変更し、インデックスを追加しました。Railsデータベースモデルが更新されない

現在の移行ファイル:

class CreateSimutronXes < ActiveRecord::Migration[5.0] 
    def change 
    create_table :simutron_xes do |t| 
     t.integer :num_constraints 
     t.integer :num_coefficients 
     t.boolean :max 
     t.decimal :obj_func 

     t.timestamps 
    end 
    add_index :simutron_xes, [:user_id, :created_at] 
    end 
end 

旧移行ファイル:私は、新しいファイルを保存し、正常に完了したrails db:migrateを実行した

class CreateSimutronXes < ActiveRecord::Migration[5.0] 
    def change 
    create_table :simutron_xes do |t| 
     t.integer :num_constraints 
     t.integer :num_coefficients 
     t.boolean :min_max 
     t.decimal :obj_func 

     t.timestamps 
    end 
    end 
end 

。マイグレーションを実行した後、モデルをテストするためにレールコンソールサンドボックスに入った。

brotherlongtail:~/workspace/Simutronix (master) $ rails console --sandbox 
Running via Spring preloader in process 8135 
Loading development environment in sandbox (Rails 5.0.2) 
Any modifications you make will be rolled back on exit 
>> SimutronX.new 
=> #<SimutronX id: nil, constraint: nil, coefficient: nil, min_max: nil, obj_func: nil, created_at: nil, updated_at: nil> 

モデルが更新されていないようです。モデルを適切に更新するために必要な追加ステップは何ですか?

+0

元の移行ファイルを変更したか、別のファイルを作成しましたか? – Iceman

+0

オリジナルを変更しました。 –

+0

その後、すべての移行をロールバックするか、少なくともその前にロールバックしない限り、dbにコミットされません。 – Iceman

答えて

2

実行後の元の移行を変更しても効果はありません。特定の移行を行う前に、rake db:rollbackをバージョンにロールバックするか、しかし、dbからテーブルをドロップして新しいマイグレーションを作成して実行するだけの方が簡単です。

Railsはテーブルschema_migrationsで実行された移行を追跡しているので、変更したい移行に対応する行も削除してください。しかしそれは非常にエレガントな解決策ではありません。

関連する問題