Backend | Migration, ORM

GEUNNN Lee·2021년 4월 18일
0

db migrate를 했는데 테이블을 수정하고 싶을 때

  • 외부 공간에(깃헙 등) 올리지 않았을 경우: migrate 파일을 롤백한 다음 수정을 하고 다시 migrate
rails db:rollback
  • 가지고 있는 파일이 얼마 없을 경우, 중요 record가 없을 경우

  • 여러번 롤백 하고 다시 migrate를 하면 이미 있던 모델 파일을 한 번에 적용한다. 롤백은 여러번, 마이그레이트는 한 번을 기억하자

  • 외부 공간에 업로드 했을 경우, 중요 record가 있는 경우: 추가적인 migration 파일을 만들어서 수정

rails g migration change_columns_from_products #migration 명령어 뒤는 파일 이름
  • Migration 파일은 제대로 알고 있지 않는 이상 지우지 말것
    • 삭제할 수 있는 경우: db에 migrate 되어있지 않은 경우, 깃헙에 마이그레이트 파일이 올라가지 않은 경우 2가지에 모두 해당될 때
    • 마이그레이션 파일은 여러 개 생성될 수 있으며 정말 많아져도 상관 없음 (나중에는 스크롤 내릴 정도로 생김)

ORM (Object Relational Mapping)

  • ORM을 통해 db 조작 (rails와 db 사이에 통역사 역할)
:item #symbol
  • string: 저장시 stack 영역 사용 > 값을 선언할 때마다 새로운 메모리 주소 할당
  • symbol: 동일한 메모리 주소. 자주 쓰이는 key값은 symbol에 저장해 메모리를 절약할 수 있음
rails c #레일즈 콘솔창 띄우기
dbname.all #테이블에 있는 모든 내용 확인
dbname.create(name:value, name2:value) #테이블에 데이터 추가
dbname.create!(name:value, name2:value) #데이터 추가시 발생한 오류 확인
  • relation 설정을 rails 에서 해야 ORM을 쓸 때 문제가 생기지 않음
rails c #레일즈 콘솔

Item.all #Item 테이블에 있는 모든 데이터 불러오기

Item.create(name: '레진키링', price: 5000) 
#Item 테이블에 이름이 레진키링이고 가격이 5000원인 데이터 추가하기
Item.create!(name: '레진키링', price: 5000)
#오류가 났을 경우 어떤 오류가 났는지 알 수 있음 create 이후 느낌표 추가

#테이블에서 데이터 찾는 방법
Item.first
Item.find(1) #id 값으로 찾는 경우
Item.find_by(name: '강아지 사료') #find_by에 적혀있는 기준으로 찾음
Item.where(name: '강아지 사료') #강아지 사료라는 이름을 가진 모든 아이템을 가져오기 
  • COMMIT 메세지가 터미널에 뜨면 데이터가 추가된 것
class Option < ApplicationRecord
	validates :name, presence: true
	# 옵션에 이름은 반드시 있어야함

	belongs_to :item
end
  • m:n을 모델 파일에 적용
class Item < ApplicationRecord
	has_many :options, dependent: :destroy
end
profile
Frontend Developer 👩🏻‍💻👩‍💻

0개의 댓글