ruby-on-rails - Ruby 中方法名与@的混淆
天蓬老师
天蓬老师 2017-04-22 09:00:26
0
3
537
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 又指的是什么?感觉有点混淆了,求解答。

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

membalas semua(3)
迷茫

@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.

迷茫

@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.

黄舟

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!