gpt4 book ai didi

ruby-on-rails - 未定义的方法 `id' 为假 :FalseClass

转载 作者:数据小太阳 更新时间:2023-10-29 08:22:50 27 4
gpt4 key购买 nike

错误(undefined method 'id' for false: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 时,评估会像这样

(false && current_user.admin?) || ?
(false) || ?
(false.id == id.to_i)
# \\ KABOOM! //

它可能应该表达如下,带括号,其中方法仅在 current_user 不是 false/nil 时调用。

current_user && (current_user.admin? || current_user.id == id.to_i)

或者,考虑使用其他流程控制结构,如 if 和/或封装逻辑的离散方法。


current_user 可以是 false 也很奇怪:nil 可能更适合“没有当前用户”的情况。

关于ruby-on-rails - 未定义的方法 `id' 为假 :FalseClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24320221/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com