Programing

Rails 마이그레이션 : 현재 마이그레이션 버전을 검색하는 가장 좋은 방법

lottogame 2020. 10. 31. 09:11
반응형

Rails 마이그레이션 : 현재 마이그레이션 버전을 검색하는 가장 좋은 방법


마이그레이션 버전 번호를 검색하는 좋은 방법이 있습니까?

특정 마이그레이션 버전에서 다르게 작동하는 모델에서 메서드를 구현해야합니다.

연결 어댑터의 assume_migrated_upto_version이 데이터베이스에서 버전을 검색하고 있지만 다른 버전을 찾을 수 없습니다.


배경 : 테이블 A에서 두 개의 열을 제거하고 테이블 B로 이동하고 테이블 A에서 테이블 B에 연결을 추가하려고합니다.

이 변경 중에이 두 열에 액세스해야합니다. 하지만 그 후에 호환성을 위해 이러한 열에 대한 프록시 메서드를 추가하고 싶습니다.


> ActiveRecord::Migrator.current_version
   (0.2ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" 
=> 20120110085802

> ActiveRecord::Migrator.get_all_versions
   (0.3ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" 
=> [20111114121610,
    20111115091108,
   ...

훨씬 더 좋은 방법이 있습니다. rake db:migrate:status

up     20120530222941  Create shenanigans
up     20120613030015  *** NO FILE ***

내 최신 마이그레이션 파일을 삭제했음을 나타냅니다.

또는 더 간단하게 :

> rake db:version
Current version: 20120613030015

앱을로드하지 않고이 작업을 수행하지 않으려면 다음과 같은 스크립트를 만들 수 있습니다.

#!/usr/bin/env ruby

root = File.expand_path("../..", __FILE__)
lines = `ls #{root}/db/migrate`
puts lines.split("\n").last.split(" ").last.split("_").first

메모 root내 스크립트가에 있기 때문에 라인이 binDIR

참고 URL : https://stackoverflow.com/questions/8845706/rails-migration-best-way-to-retrieve-current-migration-version

반응형