验证哈希键/值
问题描述:
我试图验证在哈希某些键的值:验证哈希键/值
response[:payment_status] == 'Completed' && response[:receiver_email] == '[email protected]' && response[:foo] == 'Bar'
虽然上述方法效果我敢肯定有一个更好的解决方案。如果我添加额外的键/值我想验证,我会讨厌有一个非常长的路线。
P.S:我应该提到我想要一个简单的真/假返回。
答
您可以创建期望键/值的哈希值,然后映射输入哈希值:您希望
expected = {'payment_status' => 'Completed', 'receiver_email' => '[email protected]' ... }
valid = expected.keys.all? {|key| response[key] == expected[key]}
答
如果你想每个元素是否相等,有一个优雅的解决方案:
response.slice(:payment_status, :receiver_email, :foo) == { :payment_status => 'Completed', :receiver_email => '[email protected]', :foo => 'Bar'}
就我而言,我需要比较不平等。它可以通过调用BasicObject#instance_eval
来完成。
然后写道:
response.instance_eval{ |hash| hash[:payment_status] != 'Pending' && hash[:receiver_email] == '[email protected]' && hash[:boolean_result] }
你说的哈希是什么意思?我没有看到任何。 – bitmask 2010-08-28 18:24:49
响应哈希。 – resetability 2010-08-28 18:28:44