繁体   English   中英

当在检查机器人的函数中使用中断时,Ruby函数返回true而不是false

[英]Ruby function returning true rather than false when using a break in a function that checks for bots

我有一个应该返回布尔值的函数。 在函数内部,我正在检查用户是否被煮熟。 如果用户没有被烹饪,那么我想要检查它们是否是机器人。 我有一个名为@bots的数组,包含'googlebot'和'msnbot'之类的字符串等等。 @bots数组是使用before_filter创建的,并且可用。

我想要做的是即使他们没有被烹饪也允许机器人访问。 出于某种原因,这不起作用,因为我也需要它。 我对RoR很新,我很感激能提供的任何帮助。 提前致谢。

我正在使用chrome进行测试,所以我将“Chrome”添加到了bots数组并删除了我的cookie,但该函数仍然返回false。 我相信我忽视了一些事情。

def verified?
  if cookies[:verified].nil? 
    @bots.each do |bot| 
      if request.env['HTTP_USER_AGENT'].include? bot
        true
        break
      else
        false
      end
    end
  else
    true
  end 
end

这个功能可以大大简化。 尝试这样的事情:

def verified?
  cookies[:verified].present? or @bots.any? do |bot|
    request.env['HTTP_USER_AGENT'].include? bot
  end
end

以下any?文档any? 功能,它完全符合您的要求。 最好使用这样的内置函数,这样你的代码就比你自己重新实现这些函数时更清晰,更不容易出错。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM