Ruby находит и возвращает объекты в массиве на основе атрибута

Как вы можете перебирать массив объектов и возвращать весь объект, если определенный атрибут верен?

У меня есть следующее в моем приложении rails

array_of_objects.each { |favor| favor.completed == false }

array_of_objects.each { |favor| favor.completed }

но по какой-то причине эти два возвращают тот же результат! Я попытался заменить each на collect, map, keep_if, а также !favor.completed вместо favor.completed == false, и никто из них не работает!

Любая помощь очень ценится!

Ответ 1

array_of_objects.select { |favor| favor.completed == false }

Вернет все завершенные объекты.

Вы также можете использовать find_all вместо select.

Ответ 2

Для первого случая

array_of_objects.reject(&:completed)

Для второго случая

array_of_objects.select(&:completed)

Ответ 3

Вам нужно использовать Enumerable#find_all, чтобы получить все согласованные объекты.

array_of_objects.find_all { |favor| favor.completed == false }