web-dev-qa-db-ja.com

Ruby属性に基づいて配列内のオブジェクトを検索して返す

特定の属性が正しい場合、どのようにオブジェクトの配列を反復処理し、オブジェクト全体を返すことができますか?

Railsアプリに次のものがあります

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

array_of_objects.each { |favor| favor.completed }

しかし、何らかの理由で、これら2つは同じ結果を返します! eachcollectmapkeep_if、および!favor.completedの代わりにfavor.completed == falseに置き換えようとしましたが、いずれも機能しませんでした!

どんな助けも大歓迎です!

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

完了したすべてのオブジェクトがfalseを返します。

selectの代わりにfind_allを使用することもできます。

29
Babar

最初の場合、

array_of_objects.reject(&:completed)

2番目の場合、

array_of_objects.select(&:completed)
11
Wand Maker

一致するすべてのオブジェクトを取得するには、 Enumerable#find_all を使用する必要があります。

array_of_objects.find_all { |favor| favor.completed == false }
2
Arup Rakshit