我已经看到或等于 ||= 在应用程序控制器方法中经常使用来设置变量(如果它不存在)。Railscasts 270 中的最新版本。但我有一个问题.. 以这个辅助方法为例
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
据我了解,如果 @current_user 尚不存在,则设置它。这意味着 rails 不必出入数据库,性能取胜等。
但是我对@current_user 的范围感到困惑。假设我们的网站有两个用户。第一个(我们称他为“bob”)来到站点并将@current_user 设置为他的用户对象。现在,当第二个(“john”)进来并且 rails 要求 @current_user 时……为什么用户对象不是 bob 的?毕竟@current_user 在 bob 访问站点时已经设置了一次,所以变量存在?
使困惑。