ruby-on-rails - Array.count with block 不返回正确答案

标签 ruby-on-rails ruby

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

@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/

相关文章:

mysql - 在 Rails 中使用 where 并仅检查第一个元素

ruby-on-rails - RSPec 和 Rails 3 的 Mising 模板错误

ruby-on-rails - 显示 View 中的 "Previous post"和 "Next post"链接(嵌套资源)

ruby - mongoid 中的嵌入式文档与哈希数据类型

ruby-on-rails - 如果参数为空,如何从数据库 Rails 设置默认值

ruby - 如何通过 Ruby 和 ERB(不是 Rails)使用 View 和布局?

ruby-on-rails - 如何创建指向谷歌搜索的链接并传递关键字

ruby-on-rails - 获取从周五开始的周列表

ruby-on-rails - 使用 link_to 创建新文章

使用carrierwave gem尝试在rails中上传多个图像时出现Mysql语法错误