什么是|| =在rails中?

时间:2013-03-31 00:15:18

标签: ruby

class ApplicationController < ActionController::Base

  private

  # Finds the User with the ID stored in the session with the key
  # :current_user_id This is a common way to handle user login in
  # a Rails application; logging in sets the session value and
  # logging out removes it.
  def current_user
    @_current_user ||= session[:current_user_id] &&
      User.find_by_id(session[:current_user_id])
  end
end

如何理解上面的代码? ||=是什么意思? @_current_user是id还是用户对象?另外,为什么它以_开头?

任何人都可以回答我@_current_user的内容吗?

1 个答案:

答案 0 :(得分:1)

根据this questiona ||= ba || a = b的缩写。

关于@_current_user的值,如果我们假设session[:current_user_id]5,那么具有User模型的&&运算符将返回User实例:

> 5 && User.new(:name => 'Foo')
=> #<User name="Foo"> 

因此@_current_user将成为用户实例。