DB에 칼럼을 추가하거나 지우기 위해서는 두 가지 방법이 있다.
롤백시키는 방법과 마이그레이션 파일을 새롭게 만드는 방법이다.
자세한 설명은 여기로
간략히 설명하자면,
1. 롤백은 rails db:rollback
명령어로 실행할 수 있으며, 아직 깃헙저장소에 올라가서 반영이 되지 않았을 경우 + 내가 갖고 있는 데이터가 별로 없고 그 데이터가 별로 중요하지 않을 경우 선택하는 방법이다.
2. 추가적인 마이그레이션 파일을 만드는 명령어는 rails g migration change_columns_from_options
이다.
rails db:migrate
명령어를 쳐주면 된다.FK
를 추가해주고, index
도 넣어준다 add_reference :items, :sub_category, index: true
add_foreign_key :items, :sub_categories
아래와 같이 쳤더니 마이그레이션 파일은 잘 만들어졌다.
🙄 그런데 db:migrate
를 하자 아래와 같은 오류 메세지가 떴다! 무엇이 문제일까??
오류메세지 : Getting Rails error “syntax error, unexpected tSYMBEG, expecting keyword_do or '{' or '('”
데이터타입 뒤에 간간히 붙어있는 쉼표가 문제였다.하핫...👀
add_column :items, :sub_name, :string
형식으로 입력해줘야 하고,rails g migration AddGemToItems sub_name:string thumbnail_image:string
라는 형식으로 작성해야 하며, 쉼표를 넣으면 안된다.마이그레이션 파일에서 불필요한 쉼표를 지워주었다.
다시 마이그레이트하자 성공 메세지가 떴다. 야호 ~ 🤗
마지막으로 DB가 잘 변경되었는지 db/schema.rb
스키마 파일을 꼭 확인해주자.
추가한 칼럼들이 잘 들어간 것을 확인할 수 있다
1.배열 속에 들어갈 데이터의 타입으로 먼저 column을 생성한다.
2.이 기본타입 데이터를 array로 변경하는 것은 사용하는 DB에 따라서 조금씩 방법이 다른데,
2-1. 우선 DB가PostgreSQL
인 경우에는db>migrate>2017...._create_users.rb
파일로 들어간다. 만들어진 column들을 보고 그 중에서 array로 만들 column 뒤에 ,array: true, default: []
을 직접 작성한다.
2-2. DB가sqlite3
인 경우에는app>models>users.rb
파일로 들어간다. 미리 정의되어있는 클래스 안에serialize :tags, Array
라고 작성한다.
3.각각 DB에 맞게 설정을 했으면$ rake db:migrate
를 한다.
4.DB가 잘 만들어졌는지 확인한다(스키마 파일 확인 ordbconsole
에서 확인 orirb
실행시켜서 확인).
스키마(schema) 파일 확인하기
레일즈에서 rails generate
명령어로 모델을 생성하면, schema
라는 파일이 자동으로 생성된다. 레일즈에서 schema는 설계도라기보다는 만들어진 것을 확인하는 기록용 도면에 가깝다. 스키마 파일이 DB의 구조를 표시하고있는 것은 맞지만, 스키마 파일은 수정할 수 없고 스키마를 토대로 만드는 것이 아니다. 스키마는 오히려 만들어진 것을 확인하는 용도다.
스키마 파일 말고도 DB구조를 확인할 수 있는 방법이 몇가지 더 있었다.
1) rails dbconsole
을 사용해서 sql client
를 실행해서 들어가보는 방법
2) rails c
를 사용해 레일즈 콘솔인 irb
로 들어가서 값을 넣어보고 어떻게 들어가는지 확인해보는 방법
루비 온 레일즈 글이 많이 올라오네요 ~~ 루비 온 레일즈 공부 할 만한가요 ?? 그냥 노드 하면 안 되나용 ?