在ruby中使用`include?`来检查是否存在哈希值

JP *_*shy 6 ruby ruby-on-rails

我知道它是如何include?工作的,但不是很清楚使用它与多维数组,或哈希(这可能与哈希?)

例如,鉴于我有一个看起来像这样的哈希:

@user.badges => [{:id => 1, :name => 'blahh', :description => 'blah blah blah'}, {:id => 2, :name => 'blahh', :description => 'blah blah blah'}]

我可以看看它是否有像这样的id为1的对象?

if @user.badges.include?(:id => 1)
  # do something
end
Run Code Online (Sandbox Code Playgroud)

它似乎不起作用,我怎么能正确地编写这个方法?

Bob*_*man 13

这不是有效的Ruby语法.你要:

@user.badges.any? { |b| b[:id] == 1 }
Run Code Online (Sandbox Code Playgroud)