2
誤差(undefined method 'id' for false:FalseClass
)正在引用這條線:未定義的方法`ID」爲假:FalseClass
if current_user && current_user.admin? || current_user.id == id.to_i
這是爲什麼產生誤差?如果第一個&&
條件失敗,它不應該達到current_user.id
嗎?
誤差(undefined method 'id' for false:FalseClass
)正在引用這條線:未定義的方法`ID」爲假:FalseClass
if current_user && current_user.admin? || current_user.id == id.to_i
這是爲什麼產生誤差?如果第一個&&
條件失敗,它不應該達到current_user.id
嗎?
表達
current_user && current_user.admin? || current_user.id == id.to_i
被解析爲以下
(current_user && current_user.admin?) || (current_user.id == id.to_i)
所以,當CURRENT_USER是假的,評估雲像
(false && current_user.admin?) || ?
(false) || ?
(false.id == id.to_i)
# \\ KABOOM! //
它可能應該表示爲以下括號表示僅在其中方法僅針對current_user調用時的情況t假/無。
current_user && (current_user.admin? || current_user.id == id.to_i)
可替換地,可以考慮使用其它的流量控制結構等if
和/或離散的方法封裝的邏輯。
這也是奇怪,CURRENT_USER可以false
:nil
很可能是當出現「沒有當前用戶」更貼合..
你應該在你的答案提示正確的方式做到這一點,即'A &&(B || C)' –
@ p11y感謝您的建議,我補充說。 – user2864740
感謝您的幫助!我正在使用巫術,所以我沒有寫'current_user'。 –