루비온레일즈
[Ruby On Rails] M:N Relation & Like(찜) model 만들기
sodait
2021. 4. 24. 18:57
M:N Relation
=> 그 대상을 어떻게 바라보는지가 중요
Like(좋아요, 찜) 테이블
: 어떤 사용자가 어떤 상품을 좋아요 했는지에 대한 정보를 가지고 있는 테이블
User - Like - Item 관계
- User: 사용자의 찜 목록에는 어떤 아이템들이 있는지
- Item: 이 아이템을 좋아요한 사용자는 어떤 사용자들이 있는지
=> 서로 많이 갖고 있는 경우(has many) => M:N (사용처가 명확)
-> user와 Item에 외래 키 가지고 있음
가운데 Join테이블(Like)을 두고 양쪽에 외래 키를 받아와서
1:N이 연쇄된 형태를 통해서 N:N을 표현
예외
Order, Option, LineItem도 어떻게 보면 M:N구조라고 볼 수 있으나, 그렇게 쓰지 않음
이런식으로 1:N 관계가 이어져도 필요에 따라 표현하는 것이 달라짐
but, 좋아요는 사용처가 명확 -> 특정 사용자가 좋아요한 아이템들, 어떤 아이템을 좋아요한 사용자들
Like model 만들기
rails g model Like user:references item:references
마이그레이션 파일 생성 -> 특정 사용자가 특정 상품을 좋아요함
null: false 옵션 그대로 남기기
User - Item (destroy 관계)
=> 특정 사용자가 삭제 됐을 경우 좋아요도 삭제되어야 함
(특정 아이템이 삭제됐을 때 좋아요도 필요 없음)
rails db:migrate
마이그레이션 파일 내용을 db에 적용