Ruby比较总是返回true

Bla*_*rai 1 ruby

我正在分析来自HTTP请求的响应代码,并根据该响应代码确定我如何记录该信息.问题是数据始终记录为true.例如,当我收到500响应代码时,我想记录失败.当我得到200时,我想要成功.但是,我总是取得成功.有人可以看看我的代码,或者告诉我我做错了什么,或者我能做些什么来解决它?

这是给我一个问题的代码:

if response.code == "200" or "201" or "202" or "203" or "204"
Run Code Online (Sandbox Code Playgroud)

我认为我传入一个字符串,所以当Ruby评估条件时,它返回true,但我尝试添加:.to_i(base=10)没有成功.

任何帮助将不胜感激.

AJc*_*dez 8

如前所述,它的if语句: if response.code == "200" or "201" or "202" or "203" or "204"

一个优雅的解决方案是:

if ('200'..'204').include? response.code
Run Code Online (Sandbox Code Playgroud)


Ben*_*aum 5

问题在于使用or.有关和之间差异的更详细说明,请参见http://www.coshx.com/blog/2012/10/31/rubys-and-and-or-operators-explained,但此处的问题更为基础.就好像你写的那样or||

if response.code == "200" or true
Run Code Online (Sandbox Code Playgroud)

总是会评估为true.您需要将其更改为

if response.code == "200" or response.code == "201" or ...
Run Code Online (Sandbox Code Playgroud)