팔로우 기능에 대해【초학자·Rails】

2813 단어 Rails초학자용

팔로우 기능이란?



우선, 팔로우 기능이란 무엇인가?
Twitter를 하고 있다고 잘 알겠다고 생각합니다만,
팔로우하거나, 팔로우되거나, 그러한 기능입니다.

구체적으로 어떤 구조로 이루어져 있는가?
하나씩 묶어 갑니다.

우선, 등장인물로서,
· 팔로우하는 측의 사용자
· 팔로우되는 측의 사용자
있습니다.

즉, 유저끼리의 다대다의 관계라고 말할 수 있습니다.

그리고 다 대다라는 것은
중간 테이블이 필요합니다.

그러나 여기서 문제가 발생합니다.

예를 들어, 좋아하는 기능을 구현할 때를 이미지 해 주었으면 합니다만,
좋아하는 기능에 필요한 모델은
· 사용자 모델
・post 모델
・like 모델(중간 테이블)
이 세 가지가 필요해지는 것입니다.


단지 이번 팔로우 기능의 경우,
중간 테이블을 Relationship 모델로했을 때,
· Users 모델
· Relationship 모델 (중간 테이블)
이 두 가지만 존재합니다.
즉, User→Relationship→User라는 흐름으로 데이터를 끌어옵니다.


그러면 사용자 모델에
・팔로우하는 측
・팔로우되는 측
라는 것이 엉망이되어 버리기 때문에,
잘 그들을 나누어 줄 필요가 있습니다.

DB 설계



사용자와 사용자의 다 대다 관계



만약 User 모델 안에서
・팔로우하는 측→Following 모델
・팔로우되는 측→Follower 모델
합니다.



그래서 중간 테이블
Relationship 모델입니다.
・Following 모델의 id→following_id
・follower 모델의 id→follower_id



구조



여기까지 정리하면
Following과 Follower는 동일한 User 모델이며,
팔로우할지 어떨지로 부르는 방법이 바뀌는 것 같은 이미지입니다.

예를 들어,
Twitter에서,
자신의 팔로우를 볼 때, 자신의 id(following_id)와 쌍의 follower_id를 당겨 오는 것으로 볼 수 있다


자신의 팔로워를 볼 때, 자신의 id(follower_id)와 쌍의 following_id를 당겨 오는 것으로 볼 수 있다


즉, 위의 예에서
자신의 ID가
· following_id이면 팔로우를 볼 수 있습니다.
· follower_id이면 팔로어를 볼 수 있습니다.
그렇습니다.

이번에는 일단 여기까지.
구체적인 구현에 대해서는 나중에 드립니다.

좋은 웹페이지 즐겨찾기