Rumah > Soal Jawab > teks badan
module SessionsHelper
.
.
.
# Returns the user corresponding to the remember token cookie
def current_user
if (user_id = session[:user_id])
@current_user ||= User.find_by(id: user_id)
elsif (user_id = cookies.signed[:user_id])
user = User.find_by(id: user_id)
if user && user.authenticated?(cookies[:remember_token])
log_in user
@current_user = user
end
end
end
# Returns true if the user is logged in, false otherwise
def logged_in?
!current_user.nil?
end
# Logs out the current user
def log_out
forget(current_user)
session.delete(:user_id)
@current_user = nil
end
end
最后两个 def
中的 current_user
到底指的是什么?是上面定义的 current_user
方法吗?
而以上代码中的 @current_user
又指的是什么?感觉有点混淆了,求解答。
迷茫2017-04-22 09:02:26
@current_user ialah pembolehubah instance, current_user ialah kaedah dalam modul ini dan dua kaedah terakhir memanggil current_user merujuk kepada memanggil kaedah current_user di atas. Kaedah contoh dalam kelas yang sama boleh dipanggil terus menggunakan nama kaedah.
@current_user ialah nilai pulangan dalam kaedah current_user. Dua kaedah terakhir memanggil kaedah current_user, yang sebenarnya mendapat pembolehubah contoh @current_user.
迷茫2017-04-22 09:02:26
@current_user ialah pembolehubah kelas global, current_user ialah nama kaedah, () boleh diketepikan apabila memanggil kaedah dalam ruby, jadi pemula mudah keliru, nilai @current_user ialah sifar (nilai permulaan @ xxx adalah sifar) atau Nilai yang dikembalikan oleh current_user.
黄舟2017-04-22 09:02:26
Untuk mengimbangi, current_user
sebenarnya merujuk kepada current_user
pembolehubah contoh yang dikembalikan oleh @current_user
kaedah ini. Kerana apa yang kami dapat di sini ialah nilai pulangan selepas panggilan current_user
.