0

rake db:migrate で db/schema.rb ファイルを db/migrate ファイルからプルする必要があるというのは正しいですか? rake db:migrate を実行していますが、移行でもモデルでも定義されていないテーブルを追加しています。何か案は?

ファイルの移行 (1 つだけ):

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :email
      t.string :hashed_password
      t.timestamps
    end
  end
end

レーキ後の結果のスキーマ:

ActiveRecord::Schema.define(:version => 20121113214159) do

  create_table "user_categories", :force => true do |t|
    t.string   "title"
    t.string   "description"

    t.datetime "created_at",  :null => false
    t.datetime "updated_at",  :null => false
  end

  create_table "users", :force => true do |t|
    t.string   "email"
    t.string   "hashed_password"

    t.datetime "created_at",                  :null => false
    t.datetime "updated_at",                  :null => false
  end

end

以前に user_categories の足場を追加しましたが、間違っていたので破棄しました。パーツ破壊のどこを間違えたのかわからない…

4

3 に答える 3

3

データベースに重要なデータがない場合は、rake db:drop次に実行できますrake db:create。次に実行するrake db:migrateと、スキーマがきれいに更新されます。

于 2012-11-14T03:38:13.217 に答える
2

rake db:migrateは現在の状態 (移行とは別) についてデータベースをポーリングし、それに応じて schema.rb を更新することに注意することが重要です。たとえば、SQL コマンド ラインに移動してテーブルを追加してから を実行するとrake db:migrate、移行の有無にかかわらず、schema.rb はその新しいテーブルを反映します。

于 2014-06-03T22:20:27.353 に答える