私は現在セッションをレビューしていて、以前に使用したかなり一般的なセッションコントローラーに出くわしました。
module SessionsHelper
def sign_in(user)
self.current_user = user
cookies[:remember_token] = user.remember_token
end
def sign_out
self.current_user = nil
cookies[:remember_token] = nil
end
def signed_in?
!current_user.nil?
end
def current_user
@current_user ||= User.find_by_remember_token(cookies[:remember_token])
end
def current_user=(user)
@current_user = user
end
end
そして、ビューでcurrent_userを何度も使用していることに気づきました。元:
<% if current_user == @user %>
<%= current_user.name %>
<% else %>
This user is not you.
<% end %>
current_user
ただし、インスタンス変数であるかのようにアクセスできる理由がわかりません。それは方法ではありませんか?、、などと同じように扱い、@current_user
属性を引き出すことができるのはなぜですか?それはインスタンス変数でのみ可能だと思いました。current_user.name
current_user.age
最初と2番目の方法
sign_in(user)
とsign_out
で、何self
を指しますか?これらはクラスメソッドと見なされますよね?