Michael Hartls rails tutorial で、次のコードに出くわしました。
module SessionsHelper
def current_user=(user)
@current_user = user
end
def current_user #get logged in user
@current_user||=User.find_by_remember_token(:remember_token)
end
def sign_in(user) #sign the user in by setting cookies
cookies.permanent[:remember_token]= user.remember_token
current_user = user
end
def signed_in?(user) #check whether user signed in
!current_user.nil?
end
end
私の SessionsController 作成アクションは次のようになります。
def create
user = User.find_by_email(params[:session][:email])
if user && user.authenticate(params[:session][:password])
sign_in user # sign the user in by setting cookies
else
flash.now[:error]= "Invalid email/password"
render 'new'
end
end
ライターメソッドが必要な理由
def current_user=(ユーザー)SessionsHelper モジュールで ?
user の値を @current_user 変数に直接割り当てることはできませんか?
ログイン方法 ?次のようにできますか?
module SessionsHelper
# Notice that there is no def current_user=(user) method.
def current_user
@current_user||=User.find_by_remember_token(:remember_token)
end
def sign_in(user)
cookies.permanent[:remember_token]= user.remember_token
@current_user = user #set the current user directly withoout a writer method
end
def signed_in?(user)
!current_user.nil?
end
end