prograte Rails 학습 과정 정보

9715 단어 RubyRails

본문 개요


Prograte의 Rails 학습 과정에서 실례적인 방법에 사용된self
나는 내 방식대로 그 방법을 총결하였다.

누구를 향한 보도


self의 사용 방법에 대해Prograte의 해설은 너무 간단하고 잘 모르는 사람을 대상으로 한다(나는 이렇다)

문제점


Posts 테이블: id, content, userid
Users 테이블:id,name,email
posts.rb
def user
    return User.find_by(id: self.user_id)
end
# ターミナルでrails consoleを実行したのち、以下を実行
post = Post.find_by(id:1)
post.user

#結果=>
id:1,
name:hogehoge ~~~ 
슬라이드의 설명
Post 모델에서 이 발언과 관련된user 실례를 반환값으로 하는user 방법을 정의합니다.
실례 방법에서self는 실례 자체를 가리킨다
"셀프는 그 실례 자체를 가리킨다"←????

자기 방식대로 추적 처리하는 절차


우선, Prograte 슬라이드에서 Controller가 아닌 컨트롤러에서 실례적인 방법인 사용자를 호출하지 않도록 주의하십시오.
연습에서user를 호출하는 실례적인 방법은posts-컨트롤러에서 진행합니다.
우선 거기에서 어떻게 기술하는지 봅시다.
아래와 같다.
posts_controller.rb
def show
    @post = Post.find_by(id: params[:id])
    @user = @post.user
end
실례를 정의하는 user의 코드를 결합해서 봅시다.
이하.
posts.rb
def user
    return User.find_by(id: self.user_id)
end
그리고 슬라이드의 해설문을 다시 한 번 봅시다.
실례 방법에서self는 실례 자체를 가리킨다
실례 방법user의self는 실례 방법user를 호출하는 실례 자체를 가리킨다.
사용자를 실제로 사용하는 컨트롤러를 다시 한 번 봅시다.
posts_controller.rb
def show
    @post = Post.find_by(id: params[:id])
    @user = @post.user
end
@user = @post.user
↑↑ 확실히 여기 있습니다. 실례적인 방법은user가 호출되었습니다.
그리고 호출된 실례는@post이다.
실례 방법user의self는
이것은 사용 실례 방법user의 실례@post
그러니까
그럼 @post의 내용은 무엇입니까?
@post = Post.find_by(id: params[:id])
Post 테이블의 내용을 id로 읽어들인 결과입니다.
Posts 테이블의 열은 id, 콘텐츠, 사용자입니다.아이디입니다. 각자 가격이 있습니다.
• 실례 방법user내self
이것은 사용 실례 방법user의 실례@post
· @post의 내용은 id를 통해 Post표의 내용을 검색한 결과입니다.
이를 바탕으로 실례적인 방법인user의 내용을 다시 봅시다.
posts.rb
def user
    return User.find_by(id: self.user_id)
end
한 편의 문장의 내용은 @post이다.id 꺼내기(참조, 정확합니까?)
User 테이블id를 id로 검색
그 결과로 돌아가기
이것이 실례적인 방법인user의 내용입니다.
User 책상 위에 있어요.id 열이 존재하지 않습니다. Post 테이블의 사용자왜냐하면 id와 User 테이블의 id가 같기 때문입니다.
User 테이블의 검색 기준입니다.user_id를 사용하여 Post 테이블과 User 테이블을 연결하는 검색 결과를 얻을 수 있습니다.

Prograte 이외의self 사용 예


큐타 기사에 단도직입적인 해설이 있어 인용한 것이다.
https://qiita.com/leavescomic1/items/99f32f45cd04035f146c#%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89
다음 인용----------
다음 userscontroller의 @user가 실례가 되었다.
users_controller.rb
@user = User.find(params[:id])
#findはインスタンスを探すメソッド
#Userクラスから調べたいidに該当するユーザー情報をデータベースから取得しています。
@my_age = @user.too_young 
#@userというインスタンスにtoo_youngというメソッドを使っている。
여기, @user의 실례too영을 사용하는 방법.
실례@user에 사용되는 방법...이것은 실례적인 방법이다.
다시 한 번 말씀해 주세요.rb에 기재된too영법 좀 봐.
user.rb
class User < ApplicationRecord

  validates :username, presence: true
  validates :email, presence: true 

  #ここがインスタンスメソッド
  def too_young
    if self.age >= 20 #20歳以上の場合
       return "大人です!"
    else #20歳以下の場合
       return "子供です!"
    end
  end 

end
too_young 방법에는'self'가 있습니다.
이 "self"가 뭐랄까.controller.이것은 rb가 정의한 @user이다.

@user 실례에 대해'.(점)'연결을 사용하여 실례 방법을 호출할 때 실례 방법에서'self'를 사용하고self=호출원 실례@user를 사용한다.
현재
user.rb
1,usename: "산다타로", 이메일: "@user",age:28
그래서,self.age에서age열의 값을 호출하여 "28"의 숫자를 되돌려줍니다.
인용은 여기까지--------------

끝말


Prograte는 초보자에게는 매우 편리한 학습 사이트이지만 해설은 너무 간단하다.
이해가 모호할 때 Prograte 이외에 그곳을 사용한 인코딩을 찾아보면 이해가 깊어진다.
(또한 자신의 로컬 환경에서 이 부분을 인코딩, 수정하고 오류가 발생하는 것이 가장 이해할 수 있는 수단)
솔직히 지금의 지식은 이번self가 얼마나 중요한지 잘 모르겠어요.
제가 조사를 많이 해봤는데'대략 그렇겠지'를 이해하는 게 저한테 좋을 것 같아요.
비망록의 형식으로 보도로 남기다.
혹시 같은 막힌 사람이 있다면 조금만 참고해주세요.

좋은 웹페이지 즐겨찾기