Фильтрация хешей по парам ключ-значение в Ruby on Rails: методы и примеры

Чтобы фильтровать хеши в Ruby on Rails по парам ключ-значение, вы можете использовать различные методы. Вот некоторые часто используемые подходы:

Метод 1: selectили keep_if

hash = { name: 'John', age: 25, gender: 'Male', city: 'New York' }
filtered_hash = hash.select { |key, value| key == :age || value == 'New York' }
# filtered_hash = { age: 25, city: 'New York' }

Метод 2: отклонитьили delete_if

hash = { name: 'John', age: 25, gender: 'Male', city: 'New York' }
filtered_hash = hash.reject { |key, value| key == :gender || value == 25 }
# filtered_hash = { name: 'John', city: 'New York' }

Метод 3: keep_if(деструктивная версия select)

hash = { name: 'John', age: 25, gender: 'Male', city: 'New York' }
hash.keep_if { |key, value| key == :gender || value == 'John' }
# hash = { name: 'John', gender: 'Male' }

Метод 4: slice

hash = { name: 'John', age: 25, gender: 'Male', city: 'New York' }
filtered_hash = hash.slice(:age, :city)
# filtered_hash = { age: 25, city: 'New York' }

Метод 5: select!(деструктивная версия select)

hash = { name: 'John', age: 25, gender: 'Male', city: 'New York' }
hash.select! { |key, value| key == :gender || value == 'John' }
# hash = { name: 'John', gender: 'Male' }

Метод 6: keep_if(деструктивная версия select)

hash = { name: 'John', age: 25, gender: 'Male', city: 'New York' }
hash.keep_if { |key, value| key == :gender || value == 'John' }
# hash = { name: 'John', gender: 'Male' }