答案 0 :(得分:2)
如果||=
的值为@current_user
,@current_user
或未定义,则nil
运算符将右侧表达式的结果分配给false
。如果@current_user
的值是真实的,则它不会评估表达式的右侧,并且生活会照常进行。
在这种情况下,如果@current_user
虚假,它将首先尝试通过super
在父类上调用相同的方法。如果返回nil
或false
,它将调用User.find(@current_user_id)
。该代码似乎是假设是否已装入@current_user_id
的{{1}}。如果未设置@current_user
,则此时将引发@current_user_id
错误。