期待しています9
が、取得 していnil
ます。理由がわからない。
> dfs = p.disk_items.inject { |acc, di| acc + 1 if di.type == "DiskFile" }
=> nil
同じ問題:
> dfs = p.disk_items.inject(0) { |acc, di| if di.type == "DiskFile" then acc + 1 end }
=> nil
明らかに、 が真である 9 つのオカレンスがdi.type == "DiskFile"
あります。
> dfs = p.disk_items.inject(0) { |acc, di| puts di.type == "DiskFile" }
true
true
true
true
true
true
true
true
true
false
=> nil
私は何を台無しにしていますか?ActiveRecord
条件を使用できない場合は、属性の条件を満たす配列内のすべてのオブジェクトをカウントするより良い方法があるかもしれません。
編集:FWIW:
> p.disk_items.class
=> ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_DiskItem
Railsソースのこの実装のように見えますがcount
、ブロックを受け入れない可能性がありますか? 私はこれを間違って読んでいるか、間違った場所を見ているかもしれませんが...