[ruby-on-rails] Ruby on Rails : rake db : migrate로 마이그레이션을 되돌리려면 어떻게해야합니까?

devise MODEL User를 설치 한 후 이것을 얻었습니다.

class DeviseCreateUsers < ActiveRecord::Migration
  def self.up
    create_table(:users) do |t|
      t.database_authenticatable :null => false
      t.recoverable
      t.rememberable
      t.trackable

      # t.encryptable
      # t.confirmable
      # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
      # t.token_authenticatable


      t.timestamps
    end

    add_index :users, :email,                :unique => true
    add_index :users, :reset_password_token, :unique => true
    # add_index :users, :confirmation_token,   :unique => true
    # add_index :users, :unlock_token,         :unique => true
    # add_index :users, :authentication_token, :unique => true
  end

  def self.down
    drop_table :users
  end
end

이제 rake db : migrate를 수행하면 사용자 테이블이 생성됩니다.

이 마이그레이션을 되돌릴 수있는 방법, 즉 rake를 사용하여 사용자 테이블을 다시 삭제할 수있는 방법은 무엇입니까?



답변

다음 명령을 실행하십시오.

rake db:migrate:down VERSION=<version>

<version>되돌리려는 마이그레이션 파일의 버전 번호는 어디에 있습니까 ?

예. 파일 이름이 3846656238_create_users.rb 인 마이그레이션을 되돌리려는 경우

rake db : migrate : down VERSION = 3846656238


답변

다음 명령을 실행하십시오.

rake db:rollback


답변

마이그레이션을 되 돌리는 데 사용할 수있는 세 가지 옵션이 있다고 생각합니다 (중복도 있음).

  1. 가장 최근 마이그레이션을 롤 다운합니다 .

    rake db:migrate:down # Rails 2에만 해당됩니다.

  2. 최근 마이그레이션 횟수 (n)를 롤 다운 합니다.

    rake db:rollback STEP=n

  3. 아래로 롤 이전, 특정 버전 :

    $ rake db:migrate:down VERSION=nnn # Rails 3 (버전 번호도 제공).

버전 번호는 커밋에 대한 SHA (Secure Hash Algorithm)를 의미하며 886af3194768917c78e와 같은 긴 16 진수입니다. 다음을 수행하여 확인할 수 있습니다. git log

rake -T db:rails 3.2에 포함되는 내용을 사용하여 이러한 명령 (및 기타)을 설명과 함께 볼 수 있습니다 .

rake db:migrate         # Migrate the database (options: VERSION=x, VERBOSE=false)
rake db:migrate:status  # Display status of migrations
rake db:rollback        # Rolls the schema back to the previous version (specify steps w/ STEP=n)


답변

롤백을 수행하고 롤백 할 마지막 마이그레이션 수를 지정할 수 있습니다. 예 :

rake db:rollback STEP=3

마지막 마이그레이션 3 회


답변

새로운 프로그래머 (또는 다른 새로운 프로그래머)

rake db:rollback절반 정도 작동합니다. 나는 거기서 시작한다.

그렇지 않다면 rake db:migrate:down VERSION=3846656238

되돌리려는 마이그레이션 파일의 버전 번호에 VERSION을 연결하십시오.


답변

rake db:migrate:redo

마지막 마이그레이션을 실행 취소하고 다시 적용합니다.


답변

레일 5의 경우 다음을 사용할 수 있습니다. rails command instead of rake

rails db:migrate:down VERSION=<version>

rails db : migrate : down VERSION = 20170330090327