팔로우 기능에 대해【초학자·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이면 팔로어를 볼 수 있습니다.
그렇습니다.
이번에는 일단 여기까지.
구체적인 구현에 대해서는 나중에 드립니다.
Reference
이 문제에 관하여(팔로우 기능에 대해【초학자·Rails】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ShogoSonoda/items/0f5c6d7e40baed9d658a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
사용자와 사용자의 다 대다 관계
만약 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이면 팔로어를 볼 수 있습니다.
그렇습니다.
이번에는 일단 여기까지.
구체적인 구현에 대해서는 나중에 드립니다.
Reference
이 문제에 관하여(팔로우 기능에 대해【초학자·Rails】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ShogoSonoda/items/0f5c6d7e40baed9d658a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)