.png)
소스 클론 받은 후에 바로 bundle install하고
rails db:create db:migrate db:seed
db:create -> postgre에 rails명령어를 이용해 db create하는것db:migrate -> 기존의 migrate파일을 db에 밀어넣는것db:seed -> 더미데이터를 db에 밀어넣는것
rails generate model Item or rails g model Item테이블이 생성되면 migrate와 models에 파일이 추가된다.


rails db:migrate -> 변경사항 마이그레이트!
rails에서 db:migrate를 할때는 schema.rb의 타임스탬프 기준 이후의 migrate 파일만 읽어온다!

t:타입 :컬럼명 -> ex: (t.string :name)
t: timestamp -> 레일즈에서 자동으로 생성되는 것.
schema.rb는 절대 직접 수정하지 않는다. -> migrate과정을 통해서 해야한다.

후에 schema.rb 확인해보면 새로 추가, 수정한 내용들이 반영되어있다.

like - user - item : destroy 관계 (user가 삭제되면 like도 삭제됨)
order - user - item : nullify관계 (user가 삭제되어도 order는 지워지지 않기 때문에!)
nullify관계일 경우 migrate파일에서
null:false옵션을 반드시 지워주자
rails db:migrate한 후에는 이미 db에 적용이 된 후이기 때문에 migrate 파일을 수정해봤자 반영이 되지 않는다.
-> 타임스탬프 기준 이후의 migrate 파일만 읽어오기 때문에 이미 반영이 되어있는 것들에 대해서는 업데이트가 반영되지 않는다.
rails db:rollback

rails g migration migrate파일이름

remove_column :options, :stock -> options의 stock이라는 컬럼을 지우겠다add_column :options, :price, :integer -> options에 price라는 컬럼을 string값으로 생성하겠다rename_column :options, :price, :option_price -> options의 price를 option_price로 수정하겠다마이그레이션 파일은 삭제해도 되는 경우가 있고 안되는 경우가 있다.
🗑 삭제해도 되는 경우
1) db:migrate하지 않은 경우
2) 깃헙에 올라가지 않은 경우
-> 이 두 가지 경우가 모두 해당되지 않는 경우 제외 절대 삭제하지 말것

특정 사용자가 좋아요한 아이템들, 특정 아이템을 좋아요한 사용자들
-> 다대다 관계!
이제 rails에서 database에 생성되어있는 테이블을 가져와서 써보자!
그런데 어떻게 가져와서 써야할까?
rails는 루비라는 언어를 사용하고 있고 postgresql은 sql언어를 사용한다.
-> 이 사이에서 통역해줄 애가 필요하다!
-> 그게 ORM
-> Ruby 문법을 통해 database를 조작할 수 있게 된다.

belongs_to :item -> item에 속해있다.

has_many :options, dependent: :destroy
-> option을 포함하고 있고 item이 삭제되면 option도 삭제된다.
-> option의 name은 반드시 필요하다.
-> 이 상품을 좋아요한 사용자들을 가져올건데 likes라는 레코드를 통해 가져오고 소스는 users이다. (다대다 설정)
새로 적용된 내용이 있다면 reload! 해주기!
rails c 콘솔 입력창 띄우기

Item.all -> Item 테이블의 모든 정보를 조회
Item.first -> 아이템 테이블의 첫번째 row를 조회
Item.find(1) -> 아이템 id값이 1번인 row를 조회
Item.find_by(name: '에어팟') -> 아이템의 name값이 에어팟인 첫번째 row를 조회
Item.where(name: '에어팟') -> 아이템 테이블에서 name값이 에어팟인 모든 row를 조회

Item.create(name: '에어팟', price: '3000')
-> Item 테이블에 name은 에어팟이고 price는 3000인 row를 하나 생성
-> ! 붙이면 error log를 볼 수 있다.
Item.find(1).options -> 1번 아이디를 갖고있는 item의 options를 불러올 수 있다. -> 이걸 가능하게 하는 건 has_many
Item.first.destroy -> 첫번째 아이템을 삭제
Item.first.update(name: '') -> 특정 컬럼값 업데이트
rails s (rails server) : 서버키기
rails c (rails console) : 콘솔 키기

exit : rails console에서 나가기

irb : ruby 문법 실행
