我正在使用Highrise API和Ruby包装器,但我的问题是(除了让它自己使用API的噩梦)我想搜索返回的哈希:
>> Highrise::Person.find(:all).detect{|p| p.name == 'Brandon'}
=> [#<Highrise::Person:0x102a4d2f8 @prefix_options={}, @attri....
我可以这样做,但显然detect
以及使用==
只会返回一个项目而且必须是完全匹配,如果我想搜索某些内容并且它不是完全匹配,更喜欢它“包含”的价值?例如,如果我在名称的末尾省略“n”,就像这样:
>> Highrise::Person.find(:all).detect{|p| p.name == 'Brando'}
=> nil
显然这会返回nil
,但是如何让它返回名称中包含“Brando”的项目?
答案 0 :(得分:3)
尝试select
获取所有匹配的元素,也使用正则表达式而不是相等:
Highrise::Person.find(:all).select{|p| p.name =~ /Brando/i}
答案 1 :(得分:1)
高层:: Person.find的(:所有)。选择{| P | p.name =〜/ Brando /}
如果你想要多个结果。
可以使用相同的块{| p | p.name =〜/ Brando /} with detect to get one element