前提・実現したいこと
現在progateでRuby on Rails5 学習コースIX(投稿とユーザーの紐付)を学習しているのですが、分からないことがあったので質問させてください
該当のソースコード
post.rb
class Post < ApplicationRecord validates :content, {presence: true, length: {maximum: 140}} validates :user_id, {presence: true} def user return User.find_by(id: self.user_id) end end
user.rb
class User < ApplicationRecord validates :name, {presence: true} validates :email, {presence: true, uniqueness: true} validates :password, {presence: true} # インスタンスメソッドpostsを定義してください def posts return Post.where(user_id: self.id) end
posts_controller.rb
def show @post = Post.find_by(id: params[:id]) @user = @post.user end
①selfはインスタンスメソッド内でそのインスタンス自身を指すと説明があったのですが、
return User.find_by(id: self.user_id) におけるselfは@postを指しているということなのでしょうか?
②return Post.where(user_id: self.id) におけるselfは何を指しているのでしょうか?
③そもそもselfはどういった目的で使用するのでしょうか? 今は「記述を簡素にするためのものなのかな」ぐらいに考えているのですが
表記や質問自体に分かりづらい点があったらすみません。railsに関してまだまだ理解が不足していることが多いため、可能であれば噛み砕いてご説明いただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/07 07:42