Rails每个循环找到条件

时间:2014-06-04 18:54:49

标签: ruby-on-rails

我使用的API为我提供了一系列对象,比如Users。每个user都有一个属性date。我试图找到具有特定条件的users的数量,例如where(date < Date.today)

不幸的是,当我尝试拨打users.where('date < ?', Date.today).size时,我收到了错误

undefined method `where' for #<Array:0x007f974ac2cfc0>

我认为这是因为where用于数据库查询。所以我假设我需要迭代每个对象并找到符合条件的对象。像

这样的东西
users.each { |user| user.date < Date.today }.size

但这只会返回所有users的总数。所以我假设.each块中的某些内容是错误的。请有人请为此解释一下吗?任何参考将不胜感激。

1 个答案:

答案 0 :(得分:4)

.each是一个迭代器,而不是&#34;选择器&#34;如你所愿。使用Array#select

users.select { |user| user.date < Date.today }.size

如果您真的想使用.each,可以这样做:

anterior_users = []
users.each { |user| anterior_users << user if user.date < Date.today }
anterior_users.size