如果条件带有两个值的OR

时间:2014-09-26 07:23:59

标签: ruby if-statement

有没有办法检查一个值,两个条件?

以下是这个例子。当管理员从网站注册时,管理员应该在数据库中自动设置为真。

admin_1 = admin_1@company.com
admin_2 = admin_2@company.com
if  email_from_input_field == (admin_1 || admin_2)
    user.admin == true

admin_1将设置为管理员,但不是admin_2。

2 个答案:

答案 0 :(得分:2)

你写它的方式,它评估为

email == true or false

因为admin_1 || admin_2会给出一个布尔值,检查这些变量是否存在。

你可以用这个:

[ admin_1, admin_2].include? email

它的作用是检查email

数组中admin_1, admin_2的值是否存在

2.1.0 :001 > a1 = 'arindam' => "arindam" 2.1.0 :002 > a2 = 'ari' => "ari" 2.1.0 :003 > email = 'ari' => "ari" 2.1.0 :004 > [a1,a2].include? email => true

答案 1 :(得分:0)

首先解释这个含义:

if  email == (admin_1 || admin_2)
    user.admin == true

首先评估(admin_1 || admin_2)  这意味着,如果admin_1的值为falsenil,则只考虑admin_2。因此,如果你得到admin_1除了false或nil以外的任何值,你实际上是在检查这样的条件:

if  email == admin_1

忽略admin_2。

如果你想更好地检查条件:

if ((email == admin_1) || (email == admin_2))