티스토리 뷰
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에 적용
'루비온레일즈' 카테고리의 다른 글
[Error] 레일즈 서버 A server is already running 오류 / redis 서버 오류 해결 (0) | 2021.04.24 |
---|---|
[Ruby On Rails] JWT (& JWT로 로그인) (0) | 2021.04.24 |
[Ruby On Rails] 레일즈 서버 시작 & 초기 세팅 & model 만들기 (0) | 2021.04.24 |
[Ruby On Rails] Restful API와 Serializer (2) | 2021.04.19 |
[DataBase] 관계형 데이터 모델링이란? (2) | 2021.04.16 |
댓글