[RUBY-ON-RAILS] 어떻게 레일의 액티브 모델과 그 테이블의 이름을 변경하는 마이그레이션을 작성하려면 어떻게해야합니까?
RUBY-ON-RAILS어떻게 레일의 액티브 모델과 그 테이블의 이름을 변경하는 마이그레이션을 작성하려면 어떻게해야합니까?
내 레일 응용 프로그램에서 내 모델 이름의 더 나은 세트가 있음을 명명하고 실현 끔찍 해요. 모델 및 해당 테이블의 이름을 변경하는 마이그레이션을 사용하는 방법은 없나요?
해결법
-
==============================
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.수비력 변화는 레일 4에서 모두 내가해야 할 일을했을했다
수비력 변화는 레일 4에서 모두 내가해야 할 일을했을했다
def change rename_table :old_table_name, :new_table_name end
그리고 내 모든 인덱스는 나를 위해 치료를 촬영했다. 나는 수동으로 이전 내용을 제거하고 새로운 것을 추가하여 인덱스를 업데이트 할 필요가 없었다.
그리고 그것은 올라가고 아래 관해서 인덱스에뿐만 아니라의 변화를 사용하여 작동합니다.
-
==============================
3.다른 답변과 의견은 테이블 이름 바꾸기, 파일 이름 바꾸기를 적용하고 코드를 grepping.
다른 답변과 의견은 테이블 이름 바꾸기, 파일 이름 바꾸기를 적용하고 코드를 grepping.
나는 몇 가지주의 사항을 추가하고 싶습니다 :
의 오늘 직면 실제 예를 들어 I 사용하자 '. 사업'에서 '상인'에서 모델의 이름을 변경을
-
==============================
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.넌 할 수있어 이 명령을 실행 레일 g 이주 rename_ {old_table_name}에 {new_table_name}
넌 할 수있어 이 명령을 실행 레일 g 이주 rename_ {old_table_name}에 {new_table_name}
당신은 파일을 편집하는 방법 변화에이 코드를 추가 한 후
rename_table : {old_table_name를}, {new_table_name}
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
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 루비 온 레일즈 @ 변수 (0) | 2020.02.17 |
---|---|
[RUBY-ON-RAILS] 어떻게 도우미 안쪽 컨트롤러를 사용하는 - 난간 (0) | 2020.02.17 |
[RUBY-ON-RAILS] 어떻게 레일의 현재 경로를 찾을 수 있습니까? (0) | 2020.02.17 |
[RUBY-ON-RAILS] 느린 초기 서버 시작 Phusion 여객 및 레일을 사용하는 경우 (0) | 2020.02.17 |
[RUBY-ON-RAILS] 사용 rvmrc 또는 루비 버전 파일은 RVM와 프로젝트 gemset를 설정하는 방법? (0) | 2020.02.17 |