4

次のように、ブロックを使用して配列内のオブジェクトの数を数えようとしています:

cc = u.cookies.count {|n| n.opened}

これは 3 を返しますが、これは間違っています。私はさらに一歩進んで、これを行いました:

cc = u.cookies.count {|n| false}

これは常に 0 を返すはずですが、3 を返します!!!.

これは、本来あるべきように 0 を返します。

[1,2,3,4].count {|n| false}

ここに私のユーザーモデルがあります:

class User < ActiveRecord::Base
    has_many :cookies
end

どうしたの?ありがとう

4

1 に答える 1

3

u.cookiesActiveRecord::Relation、配列ではありません。

したがって、ブロックが何であれ、結果は変わりません。次のことを行う必要があります。

cc = u.cookies.where(:opened => true).count
于 2012-12-10T02:51:49.017 に答える