0

説明させてください:

私はM. Hartlのチュートリアルに従いましたが、彼と同じように移行を行いました。これで、db/migrate ディレクトリに次のファイルができました (タイムスタンプは割愛します)。

create_users.rb

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

      t.timestamps
    end
  end
end

add_index_to_users_email.rb

class AddIndexToUsersEmail < ActiveRecord::Migration
  def change
    add_index :users, :email, unique: true
  end
end

add_password_digest_to_users.rb

class AddPasswordDigestToUsers < ActiveRecord::Migration
  def change
    add_column :users, :password_digest, :string
  end
end

add_remember_token_to_users.rb

class AddRememberTokenToUsers < ActiveRecord::Migration
  def change
    add_column :users, :remember_token, :string
    add_index :users, :remember_token
  end
end

add_admin_to_users.rb

class AddAdminToUsers < ActiveRecord::Migration
  def change
    add_column :users, :admin, :boolean, default: false
  end
end

次のようにすべてをcreate_users.rbに混ぜて、アプリに損傷を与えることなく他の移行ファイルを削除することは可能ですか?

create_users.rb

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :name
      t.string :email
      t.string :password_digest
      t.string :remember_token
      t.boolean :admin, default: false

      t.timestamps
    end
    add_index :users, :email, unique: true
    add_index :users, :remember_token
  end
end
4

1 に答える 1

1

はい、可能です。そのための簡単な戦略は次のとおりです。

  1. データの損失を避けるために、データベースをダムにする (DB バックアップを作成する)
  2. データベースをドロップして再作成します。

    rake db:drop db:create
    
  3. あなたが示したように、すべての移行を単一のファイルにマージします

  4. 走る:

    rake db:migrate
    
  5. DB バックアップを復元する

ただし、すでにアプリケーションを本番環境にデプロイしている場合、これは難しい場合があります。

于 2013-05-23T09:43:22.320 に答える