-1

是否可以为已注销的用户执行以下操作而不会触发.consumer被调用 nil 错误?

if signed_in? && current_user.consumer
  puts "Hello world"
end

对于我的大部分网站,我不得不嵌套这些类型的条件,例如:

if signed_in?
  if current_user.consumer
  end
end

...看起来还不错,但是当页面上有很多其他代码时,可能会很麻烦..

我想要评估哪里的语句,signed_in? 如果为真,则评估第二个条件......但都在一行中。这可能吗?

4

1 回答 1

1

是的!Ruby 支持短路逻辑,因此您的第一个代码块将完全按照您的意愿执行:如果signed_in?计算结果为false,Ruby 解释器将是惰性的,并且不会费心评估其余的条件。

类似地,如果用户没有登录,当它意识到是并且不费心评估!signed_in? || current_user.banned?时会短路。!signed_in?truecurrent_user.banned?

于 2013-07-25T18:15:55.837 回答