如何从Ruby的哈希中收集许多属性

时间:2019-07-10 18:26:03

标签: ruby-on-rails ruby hash

我想知道是否可以从哈希中收集许多属性。

当前使用ruby 2.6.3

类似的东西

hash = { name: "Foo", email: "Bar", useless: nil }
other_hash = hash[:name, :email]

输出应该是另一个哈希,但没有无用的键/值

2 个答案:

答案 0 :(得分:7)

您可以使用Ruby内置的Hash#slice

hash = { name: "Foo", email: "Bar", useless: nil }
p hash.slice(:name, :email)
# {:name=>"Foo", :email=>"Bar"}

如果使用Rails,则可以使用Hash#except,它只接收您要忽略的密钥:

p hash.except(:useless)
# {:name=>"Foo", :email=>"Bar"}

答案 1 :(得分:3)

如果无用键具有nil值,则也可以使用Hash#compact

h = { name: "Foo", email: "Bar", useless: nil }
h.compact #=> {:name=>"Foo", :email=>"Bar"}