![](/img/trans.png)
[英]Create function in ruby is returning ActiveRecord::Relation object rather than the actual record
[英]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.