我有一个从数据库调用创建的赋值对象数组:
@assignments = @player.assignments
我想用这个来计算它们:
@assignments.count {|x| x.sets == 0.0}
这应该计算 0.0 组的作业数。但是,这总是返回@assignments 中的对象总数。我查过了
@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 with block 不返回正确答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18309153/