즉, 프로그래밍[Ruby&Rails 복습편]~연관성을 극복하자~

4496 단어 RubyRails
낮은 압력으로 두뇌를 충분히 움직이게 하기 위해 최선을 다했다.
정말 머리에서 김이 나요...며칠 지나면 지혜가 열이 나겠지...
오늘은 잠시 쉬면서 오류 해결 시리즈를 쓰고 싶습니다.

무엇이 연관입니까?


한마디로 모델과 모델을 결합한 것이다.
연맹입니다.
예를 들어, Tweet 모델과 Users 모델 두 모델이 있다고 가정합니다.
이 두 가지 기능은 각각 Twitters표,users표의 정보를 얻고 컨트롤러에 전달하는 데 사용된다.
현재, 컨트롤러는 트위터 테이블과users 테이블의 내용을 처리하기 시작했습니다.
그리고 나서
1. Tweet 모델에 지시
2. Tweet 모델이 트위터 테이블에서 정보를 찾다
3. 찾은 정보를 컨트롤러에 전달
를 참고하십시오.
마찬가지로 User 모델도 데이터를 전달해 주십시오...를 참고하십시오.

이번에는 두 개의 모형만 있다. 예를 들어 모형이 많으면 정보를 원하는 책상 위의 모든 모형을 호출하기 위해 처리가 무거워진다.
따라서 연관성 중에는 모델과 모델 모두 연관성이 있어야 한다.
이렇게 하면 어떤 모델이 호출될 때 다른 모델이 속한 데이터를 내보낼 수 있다.
이번 경우라면 Tweet모델과 Users모델을 연결시키면 Twitters표의 정보와users표의 정보를 컨트롤러에 넘길 수 있다.

전선 확인!


그렇다면 관련 기술이 어떻게 쓰였는지 실제 코드를 확인해 봅시다.
users_conrtoller.rb
1. class UsersController < ApplicationController
2.  def show
3.    user = User.find(params[:id])
4.    @nickname = user.nickname
5.    @tweets = user.tweets.page(params[:page]).per(5)
6.  end
7. end
위에서 다섯 번째 줄을 세다

5. @tweets = user.tweets.page(params[:page]).per(5)
우리 이 기술에 주목합시다.
안의 요소를 분해하면 tweets라는 기술이 나온다.
이것tweets이 어디서 나왔는지 모델 파일에 정의되어 있습니다.
users.rb
class User < ApplicationRecord
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable
  has_many :tweets
  has_many :comments
end
이쪽 모델 파일 위의 네 번째 줄에서'한 사람의user가 여러 개의 Twitters'를 정의합니다.
따라서 컨트롤러 파일에서 tweets의 기술을 사용할 수 있다.

책상 위에서 확인해 보세요!


나는 책상 사이의 연결을 그림으로 만들었다.
같은 색의 선으로 연결된 것은 한 사용자의 여러 정보입니다.

예를 들어users표의 id3 정보를 지정하면 Twitters표의 id4, 5, 6 정보도 함께 얻을 수 있다.
--
어때요?
파일을 뛰어넘으면 변수와 정의된 기술의 동작은 모르지만 도해를 사용해서 이해해야 한다고 생각합니다.
하지만 그 수행은 계속되고 있어...

좋은 웹페이지 즐겨찾기