你好我已经包含了给定的代码
eventCode ='AUTHORISATION'
success ='true'
paymentMethod = 'unionpay'
eventCode == 'AUTHORISATION' && success == 'true' && paymentMethod == ('alipay' || 'unionpay') #returns false
上面的条件返回false但它必须返回true为什么我的条件不起作用。请帮我解决这个问题。
答案 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)