[추적 기능] 루비/rails(추적 측면의 모델만 설명)
[추적 기능] 루비/rails
나는 따라가는 기능을 설치할 때 매우 고생했다.
그래서 나는 내가 쓴 필기를 포함한 해설을 남기고 싶다.
(이미 같은 종류의 아주 예쁜 기사가 여러 편 있다...)
저는 rails 강좌에 쓰인 추적 기능의 설치 방법이 저에게 가장 이해하기 쉽다고 생각합니다. 그래서 저는 강좌의 작성법을 바탕으로 설명하고 싶습니다.
나는 이 글에서 모든 추적 기능의 설치 방법을 설명하는 것이 아니라 억제 요점을 설명하고 싶다.
[전제]
사용자 모델의 한 id가 다른 id를 추적합니다.
예를 들어 id(1)의 사람이 id(2)의 사람을 추적한다.
(사용자가 사용자에게 관심을 가질 것이라고 말하고 싶었을 뿐이다.)
아래의 그림은 파일로 만들어야 하는 모델의 수량이 두 개라는 것을 나타낸다.
이럴 때,relationships모델이 어떤 중간모델이라고 생각하시면 충분합니다.
다음은 각 모델의 내용을 설명할 것이다.
models/user.rb
has_many :active_relationships, class_name: "Relationship",
foreign_key: "follower_id",
dependent: :destroy
has_many :passive_relationships, class_name: "Relationship",
foreign_key: "followed_id",
dependent: :destroy
has_many :following, through: :active_relationships, source: :followed
has_many :followers, through: :passive_relationships, source: :follower
models/relationship.rb
belongs_to :follower, class_name: "User"
belongs_to :followed, class_name: "User"
상기 두 모델에서 묘사한 관계도는 이렇다.
(주목하는 쪽에서만 쓰기)
모델 두 명밖에 없잖아??이렇게 생각하는 사람.
user,follower(user),following(followed)은 원래user 모델이었다.
이것은 사실user모델을 안에서 종류에 따라 분리한 것이다.
다음 부분은 한쪽을 주목하는 관계로 이번 할애해설.
(주목자와 기본적으로 같은 원리)
models/user.rb
has_many :passive_relationships, class_name: "Relationship",
foreign_key: "followed_id",
dependent: :destroy
has_many :followers, through: :passive_relationships, source: :follower
models/relationship.rb
belongs_to :followed, class_name: "User"
관계 관계를 이해하는 것이 가장 중요하고 가장 중요하다.
우선 쓰여 있는 것의 뜻을 하나하나 이해해야 한다.
해설
models/user.rb
has_many :active_relationships, class_name: "Relationship",
foreign_key: "follower_id",
dependent: :destroy
①has_many :active_relationships
user 모델은 active_relationships 및has_관계
②class_name: "Relationship"
Relationship 모델 이름 바꾸기 및 active_ 사용relationships라는 이름을 지어라.
③foreign_key: "follower_id"
active_relationships는 외부 키를 가지고 있습니다. "follower_id"(미행자의 id) 입니다.
하면, 만약, 만약...
사용자 모델에서 active_로하면, 만약, 만약...관계
또한relationship 모델은 추적된 사람의 id를 외부 키로 가지고 있습니다.
다음에 가자.
해설 ②
models/user.rb
has_many :following, through: :active_relationships, source: :followed
①has_many :following,
사용자와following 모델의 관계 구축
②through: :active_relationships,
관계식 시 active_relationships는 중간 모델이 되고 파이프 역할이 됩니다.
③source: :followed
연관된 원래 이름을 가리킨다.
사용자 모델의followed를 사용합니다.
이것도 ⑶의 설명이 필요하다.
하면, 만약, 만약...
사용자 모델은following(followed)모델과 관계를 맺었다.
그리고 그 사이에 active_relationships를 중간 모델로 삼다.
다음에 가자.
해설
models/relationship.rb
belongs_to :follower, class_name: "User"
①belongs_to :follower, class_name: "User"
relationship 모델은 follower 모델 중belongs_to와의 관계
follower 모델이user 모델의 이름을 바꾸고 있습니다.
세 개를 연결하다
(3) 가져와.
~~~~~~~~~~~~~~~~~~~~~~~
⑴
사용자 모델에서 active_로하면, 만약, 만약...관계
또한relationship 모델은 추적된 사람의 id를 외부 키로 가지고 있습니다.
⑵
사용자 모델은following(followed)모델과 관계를 맺었다.
그리고 그 사이에 active_relationships를 중간 모델로 삼다.
⑶
active_relationship 모형은belongs_to와follower모델의 관계를 맺습니다.
follower 모델이user 모델의 이름을 바꾸고 있습니다.
~~~~~~~~~~~~~~~~~~~~~~~
나는 이 세 편의 문장을 연결하고 싶다.
설명하기 쉽도록 순서가 좀 바뀌었다.
^^^^^^^^^^^^^^^^^^^^^^^
① 사용자는 following 기종과 연결되어 있으며 그 사이에 중간 기종이 있다.(2) 섹션
② 중간 모델에는 추적된 사람의 ID(follower_id)가 있습니다.Υ부분
③ 추적자의 ID인 follower_id (followers) 의 모델은user 모델의 이름만 바꿨습니다.
또한 ①의 팔로잉 모델도 사용자 모델의 이름만 바뀌었다.
사용자 모델의 이름을 종류에 따라 바꾸어 중간표를 사이에 두고 서로 관계를 맺도록 합니다.⑶ 부분
^^^^^^^^^^^^^^^^^^^^^^^^
다만 바뀌었다는 뜻은 처음에 말한 모델에서 종류에 따라 진행된다는 것이다.
주목받는 사람은 active_relationship에서 주목하는 사람으로 볼 때 주목받는 사람은 누구인가.
주목받는 사람 누가 할애의 요소 보충에 관심을 갖는가.
조금만 더 짧게 정리하면...
사용자 모델을 두 가지로 나누어 중간 시계를 끼고 관계를 좋게 합니다.
한 마디.
여기서 마치겠습니다.
광고 달력에 참여한 건 좋지만.
큰 기능을 해 본 적이 없는 필자이기 때문에 무엇을 게재할 때 어떤 상태인지
아니, 그렇게 설명하기도 힘든데... 다시 느꼈어요.
그나저나 자기도 100% 이해 못해.
만약 어느 날 다른 사람에게 알리는 입장에 서게 된다면, 태만하지 않도록 주의해라
Reference
이 문제에 관하여([추적 기능] 루비/rails(추적 측면의 모델만 설명)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/harinezumi-html/items/da94278ae95cd7df4d78
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
has_many :active_relationships, class_name: "Relationship",
foreign_key: "follower_id",
dependent: :destroy
has_many :passive_relationships, class_name: "Relationship",
foreign_key: "followed_id",
dependent: :destroy
has_many :following, through: :active_relationships, source: :followed
has_many :followers, through: :passive_relationships, source: :follower
belongs_to :follower, class_name: "User"
belongs_to :followed, class_name: "User"
has_many :passive_relationships, class_name: "Relationship",
foreign_key: "followed_id",
dependent: :destroy
has_many :followers, through: :passive_relationships, source: :follower
belongs_to :followed, class_name: "User"
has_many :active_relationships, class_name: "Relationship",
foreign_key: "follower_id",
dependent: :destroy
has_many :following, through: :active_relationships, source: :followed
belongs_to :follower, class_name: "User"
Reference
이 문제에 관하여([추적 기능] 루비/rails(추적 측면의 모델만 설명)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/harinezumi-html/items/da94278ae95cd7df4d78텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)