Как собрать много атрибутов из хэша в ruby - PullRequest
2 голосов
/ 10 июля 2019

Мне интересно, можно ли собрать много атрибутов из хэша.

В настоящее время используется ruby ​​2.6.3

Нечто подобное

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

Вывод должен быть другим хешем, но без бесполезного ключа / значения

Ответы [ 2 ]

7 голосов
/ 10 июля 2019

Вы можете использовать встроенный в 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"}
3 голосов
/ 10 июля 2019

Если бесполезные ключи имеют значения nil, вы также можете использовать Hash # compact :

h = { name: "Foo", email: "Bar", useless: nil }
h.compact #=> {:name=>"Foo", :email=>"Bar"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...