2

列(名前、パス)を持つデータベースがあります。これで、列を (name、pathorig、pathjson、scramble) に変更する移行ファイルができました。

テーブルを更新rake db:resetrake db:migrateません。なぜこれが起こることができますか?

私の移行ファイル:

class CreateUploads < ActiveRecord::Migration
  def change
    create_table :uploads do |t|
      t.string :name
      t.string :pathorig
      t.string :pathjson
      t.string :scramble

      t.timestamps
    end
  end
end

schema.rb ファイル:

ActiveRecord::Schema.define(version: 20131029072745) do

  create_table "uploads", force: true do |t|
    t.string   "name"
    t.string   "path"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

end
4

1 に答える 1

9

rake db:migrate db:reset と db:schema:load の違いにはrake db:*、さまざまなコマンドが何をするかについての優れた説明があります。

rake db:resetを実行するためdb:schema:load、を呼び出すのではなく、テーブルから古い列をロードしていますdb:migrate。これが、移行が実行されていない理由です。

既存のテーブルを再作成するか、手動で実行するのではなく、それらの列の名前を変更する移行を作成することを検討してくださいrake db:drop; rake db:create db:migrate

于 2013-11-05T22:55:38.527 に答える