我有一个应该返回 bool 值的函数。在函数内部,我正在检查用户是否被 cookie。如果用户没有被 cookie,那么我想运行检查以查看他们是否是机器人。我有一个名为@bots 的数组,包含“googlebot”和“msnbot”等字符串。 @bots 数组是使用 before_filter 创建的并且可用。
我想做的是允许机器人访问,即使它们没有 cookie。由于某种原因,这不起作用,因为我也需要它。我是 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
Here是 any?
函数的文档,它正是您在这里寻找的。最好使用这样的内置函数,这样与您自己重新实现此类函数相比,您的代码更清晰且更不容易出错。
关于ruby-on-rails - 在检查机器人的函数中使用中断时,Ruby 函数返回 true 而不是 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15750741/