我有一个从数据库调用创建的赋值对象数组:

@assignments = @player.assignments

我想用这个数他们:
@assignments.count {|x| x.sets == 0.0}

这应该计算0.0集的工作分配数。但是,这始终返回@assignment中的对象总数。我查过了
@assignments.each {|x| puts x.sets == 0.0}

在所有情况下都不会返回true。
有线索吗?
编辑>
@assignments.map(&:sets)
=> [35.0, 120.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.0, 75.0, 0.0, 0.0, 0.0, 0.0]

最佳答案

很可能,@assignments不是一个Array实例,但是ActiveRecord::Relation,请尝试@assignments.class。如果是这样,count方法无法按预期工作,它将返回记录数。
尝试

@assignments.where(sets: 0).count

或偶数(先转换为数组)
@assignments.to_a.count {|x| x.sets == 0.0}

关于ruby-on-rails - 带块的Array.count无法返回正确答案,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18309153/

10-11 08:14