我期待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
显然有九个事件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
可能不接受块?虽然我可能读错了或者看错了地方......