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インスタンスも同様です。