检查包含String的值

时间:2018-03-12 15:21:55

标签: ruby

如果我有这两个条件,我想提出错误:

command_options[:gateways] == %w(staging_bank) && command_options[:env] == %w(all)

我试过了:

raise "Testing All gateways is not allowed in staging_bank." unless command_options[:gateways] == %w(staging_bank) && command_options[:env] == %w(all)

但我收到错误`[]':没有将Symbol隐式转换为整数(TypeError)

实现这个的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

正确的方法是比较可比类型。从命名看起来,command_options[:env]似乎是一个单独的字符串。你将它与一个数组%w(all)进行比较。这自然不会起作用(比较总是假的)。下定决心,比较苹果和苹果。

对于实际的错误消息,它与比较无关。看起来command_options是一个数组,而不是一个哈希(你可能意味着它)。

另请阅读Array#include?,我认为这是您需要的。