-
Rails에서 Model 삭제 및 Table 없애기, schema 초기화(Ruby on Rails)카테고리 없음 2020. 7. 23. 11:32728x90반응형
Rails 프레임워크를 다루고 있던 도중, model 에서 문제점 하나가 발생했는데, 이를 처리하는 방법을 혼자 터득하여 저와 같은 고민을 하시는 분들이 계실 수 있기 때문에 이를 블로그로 글을 남기려 합니다.
문제점 : model을 만들고 DB에 최종적으로 등록을 했을 시에, 다른 테이블과 충돌이 일어나서 request ~~ already exists 같은 문제가 발생해서 이를 하나하나 처리하려다가 순서도 엉망이고 잘못 파일을 건드려서 문제가 더 커졌습니다.(제가 Rails 초보라서..)
모델 생성
1. 우선 apple이라는 model을 하나 생성했습니다.
$rails g model modelname attributes
2. $rake db:migrate 명령어로 최종 DB에 모델을 등록하여 schema.rb 파일이 만들어진 것을 볼 수 있습니다.
이렇게 되면,
db/migrate/~~apples.rb 와 app/models/apple.rb , schema.rb에 table이 만들어진 것을 확인할 수 있습니다.
제가 작업을 하던 도중에 잘못하여 model이름을 동일한 것으로 만들다가 충돌이 일어나서 기존에 model 및 table을 전부 삭제하고 싶었습니다.
제 방법은
(1,2,3,4 순서입니다.)
1. $rake destroy model apple
이 명령어를 치게 된다면 위에서 g option(generate)으로 주었던 모델과 관련된 파일들 전부 삭제할 수 있습니다.
이렇게 전부 삭제되는 것을 볼 수 있습니다.
아직 모델을 삭제시킨 것이지, 실제 DB에 찍혀있는 테이블을 없앤 것은 아닙니다. 그래서 table을 삭제시켜 보겠습니다.
2. $rails g migration apples 명령어를 통해서 migration파일을 하나 생성해 줍니다. 삭제시킬 table이름과 동일하게요.
위에서 create_table(:apples)라고 table이 만들어졌기 때문에 동일한 이름인 apples로 만들어 주겠습니다.
이렇게 되면 db/migrate/폴더 안에 ~apples.rb파일이 만들어지는데, 그 안에
이렇게 바꿔줍니다.
drop_table :삭제할 table이름을 입력해 주셔야 합니다. 저장 후,
3. $rake db:migrate 명령을 다시 터미널에 실행해 줍니다.
그러면 table이 drop 된 것을 알 수 있고, 스키마가 비어진 것을 확인할 수 있습니다. 이러면 model과 table 모두 삭제한 것입니다.
4. $rails d migration apples 명령을 실행해 주면서 migration파일을 삭제시키면 최종 완료된 것입니다.
============================================================================
위에 방법 이외에도 2가지 방법이 더 있는 것으로 압니다. 이는 제가 참고한 출처 링크를 남기겠습니다.
https://cnpnote.tistory.com/entry/RUBY-ON-RAILS-DB-%EB%A7%88%EC%9D%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EC%85%98-%EB%82%9C%EA%B0%84-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%85%8C%EC%9D%B4%EB%B8%94%EC%9D%84-%EC%82%AD%EC%A0%9C%ED%95%98%EB%A0%A4%EB%A9%B4
※ 우선 이 글은, 아직 Rails 기초 밖에 모르는 초보 개발자 입장에서 정리한 글입니다. 혹시나 잘못된 내용이나 수정할 사항 있다면 댓글로 알려주시면 감사하겠습니다.
반응형