我使用的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
块中的某些内容是错误的。请有人请为此解释一下吗?任何参考将不胜感激。
答案 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