def current_user
@_current_user ||= session[:current_user_id] &&
User.find_by_id(session[:current_user_id])
end
@_current_user は単に id ですか、それとも id によって見つかったユーザー オブジェクトですか?
def current_user
@_current_user ||= session[:current_user_id] &&
User.find_by_id(session[:current_user_id])
end
@_current_user は単に id ですか、それとも id によって見つかったユーザー オブジェクトですか?
質問に直接答えるには: ID で見つかったユーザー オブジェクト、またはセッションに値nil
がない場合、またはその ID:current_user_id
のユーザー オブジェクトが存在しない場合。
基本的に、@_current_user
すでに設定されている場合は変更されません。それ以外の場合は、session[:current_user_id]
存在する/設定されているかどうかをチェックし、存在する場合は、演算子の性質により&&
、右側が式の値として返されます。右側は基本的にそれでユーザーを検索しますcurrent_user_id
。
さらに簡単:@_current_user
まだ設定されていない場合、セッションにcurrent_user_id
値があれば、そのユーザー ID に一致するオブジェクトに設定@_current_user
されます。User
がであると仮定するsession[:current_user_id]
と5
、&&
User モデルを持つオペレーターは User インスタンスを返します。
> 5 && User.new(:name => 'Foo')
=> #<User name="Foo">
演算子の両側&&
が「真」(未定義でも でもないことを意味するfalse
) の場合、右側の値が&&
演算子によって返されます。User@_current_user
インスタンスも同様です。