或条件不适用于rails 4

时间:2016-03-14 10:36:37

标签: ruby-on-rails ruby-on-rails-4

你好我已经包含了给定的代码

eventCode ='AUTHORISATION' 
success ='true' 
paymentMethod = 'unionpay'
eventCode == 'AUTHORISATION' && success == 'true' && paymentMethod == ('alipay' || 'unionpay') #returns false

上面的条件返回false但它必须返回true为什么我的条件不起作用。请帮我解决这个问题。

4 个答案:

答案 0 :(得分:2)

您需要执行以下操作。

eventCode == 'AUTHORISATION' && success == 'true' && (paymentMethod == 'alipay' || paymentMethod== 'unionpay')

因为paymentMethod ==('alipay'||'unionpay')将paymentMethod检查为仅支付第二个字符串的否。

答案 1 :(得分:2)

Ruby有一种更优雅的方法来检查某个值是否在给定列表中:

['alipay', 'unionpay'].includes?(paymentMethod)

在Rails中,您可以使用ActiveSupport .in?方法编写反转,这通常更具语义意义:

paymentMethod.in?(['alipay', 'unionpay'])
eventCode == 'AUTHORISATION' && success == 'true' && paymentMethod.in?(['alipay', 'unionpay'])

答案 2 :(得分:1)

'alipay' || 'unionpay'始终评估为'alipay',因此您有效地撰写了paymentMethod == 'alipay'。你必须写(paymentMethod == 'alipay' || paymentMethod == 'unionpay')

答案 3 :(得分:0)

您也可以试试这个。

eventCode == 'AUTHORISATION' && success == 'true' && %w{alipay unionpay}.include?(paymentMethod)