복붙노트

[RUBY-ON-RAILS] 어떻게 레일의 액티브 모델과 그 테이블의 이름을 변경하는 마이그레이션을 작성하려면 어떻게해야합니까?

RUBY-ON-RAILS

어떻게 레일의 액티브 모델과 그 테이블의 이름을 변경하는 마이그레이션을 작성하려면 어떻게해야합니까?

내 레일 응용 프로그램에서 내 모델 이름의 더 나은 세트가 있음을 명명하고 실현 끔찍 해요. 모델 및 해당 테이블의 이름을 변경하는 마이그레이션을 사용하는 방법은 없나요?

해결법

  1. ==============================

    1.다음은 그 예이다 :

    다음은 그 예이다 :

    class RenameOldTableToNewTable < ActiveRecord::Migration
      def self.up
        rename_table :old_table_name, :new_table_name
      end
    
      def self.down
        rename_table :new_table_name, :old_table_name
      end
    end
    

    내가 가서 수동 모델을 선언 파일의 이름을 변경했다.

    편집하다:

    레일 3.1 및 4에서, 액티브 :: 마이그레이션 :: CommandRecorder는이 작업을 수행 할 수 있도록 rename_table 마이그레이션을 반대하는 방법을 알고있다 :

    class RenameOldTableToNewTable < ActiveRecord::Migration
      def change
        rename_table :old_table_name, :new_table_name
      end 
    end
    

    (당신은 여전히 ​​통해 이동하고 수동으로 파일의 이름을 변경해야합니다.)

  2. ==============================

    2.수비력 변화는 레일 4에서 모두 내가해야 할 일을했을했다

    수비력 변화는 레일 4에서 모두 내가해야 할 일을했을했다

    def change
      rename_table :old_table_name, :new_table_name
    end
    

    그리고 내 모든 인덱스는 나를 위해 치료를 촬영했다. 나는 수동으로 이전 내용을 제거하고 새로운 것을 추가하여 인덱스를 업데이트 할 필요가 없었다.

    그리고 그것은 올라가고 아래 관해서 인덱스에뿐만 아니라의 변화를 사용하여 작동합니다.

  3. ==============================

    3.다른 답변과 의견은 테이블 이름 바꾸기, 파일 이름 바꾸기를 적용하고 코드를 grepping.

    다른 답변과 의견은 테이블 이름 바꾸기, 파일 이름 바꾸기를 적용하고 코드를 grepping.

    나는 몇 가지주의 사항을 추가하고 싶습니다 :

    의 오늘 직면 실제 예를 들어 I 사용하자 '. 사업'에서 '상인'에서 모델의 이름을 변경을

  4. ==============================

    4.또한 인덱스를 교체해야합니다 :

    또한 인덱스를 교체해야합니다 :

    class RenameOldTableToNewTable< ActiveRecord:Migration
      def self.up
        remove_index :old_table_name, :column_name
        rename_table :old_table_name, :new_table_name
        add_index :new_table_name, :column_name
      end 
    
      def self.down
        remove_index :new_table_name, :column_name
        rename_table :new_table_name, :old_table_name
        add_index :old_table_name, :column_name
      end
    end
    

    그리고 다른 답변 여기에 설명 수동으로 등 파일의 이름을 바꿉니다.

    참조 : http://api.rubyonrails.org/classes/ActiveRecord/Migration.html

    확실히 당신은 당신이이 마이그레이션 쓰기 앞으로 한 후 롤백 롤 할 수 있는지 확인하십시오. 당신이 뭔가 잘못을 얻을 효과 뭔가 시도가 더 이상이 존재하는 마이그레이션 집착 경우는 까다로운 얻을 수 있습니다. 베스트 전체 데이터베이스 쓰레기 및 롤 백업 할 수 없습니다 경우 다시 시작합니다. 그래서 당신이 뭔가를 백업해야합니다 유의하십시오.

    또한하십시오 has_ ​​또는 belongs_to 또는 뭔가 정의 된 다른 테이블의 모든 관련 열 이름을 schema_db을 확인합니다. 당신은 아마 너무 사람들을 편집해야합니다.

    그리고 마지막으로, 회귀 테스트 스위트없이이 일을하는 것은 너트 것이다.

  5. ==============================

    5.넌 할 수있어 이 명령을 실행 레일 g 이주 rename_ {old_table_name}에 {new_table_name}

    넌 할 수있어 이 명령을 실행 레일 g 이주 rename_ {old_table_name}에 {new_table_name}

    당신은 파일을 편집하는 방법 변화에이 코드를 추가 한 후

    rename_table : {old_table_name를}, {new_table_name}

  6. from https://stackoverflow.com/questions/471416/how-do-you-write-a-migration-to-rename-an-activerecord-model-and-its-table-in-ra by cc-by-sa and MIT license