3
  def current_user
    @_current_user ||= session[:current_user_id] &&
      User.find_by_id(session[:current_user_id])
  end

@_current_user は単に id ですか、それとも id によって見つかったユーザー オブジェクトですか?

4

2 に答える 2

1

質問に直接答えるには: ID で見つかったユーザー オブジェクト、またはセッションに値nilがない場合、またはその ID:current_user_idのユーザー オブジェクトが存在しない場合。

基本的に、@_current_userすでに設定されている場合は変更されません。それ以外の場合は、session[:current_user_id]存在する/設定されているかどうかをチェックし、存在する場合は、演算子の性質により&&、右側が式の値として返されます。右側は基本的にそれでユーザーを検索しますcurrent_user_id

さらに簡単:@_current_userまだ設定されていない場合、セッションにcurrent_user_id値があれば、そのユーザー ID に一致するオブジェクトに設定@_current_userされます。User

于 2013-03-31T00:31:44.520 に答える
0

がであると仮定するsession[:current_user_id]5&&User モデルを持つオペレーターは User インスタンスを返します。

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

演算子の両側&&が「真」(未定義でも でもないことを意味するfalse) の場合、右側の値が&&演算子によって返されます。User@_current_userインスタンスも同様です。

于 2013-03-31T00:29:09.420 に答える