我有一个方法,旨在根据一组标准从数据库中返回许多项目:
scope :expired_not_marked, lambda { |client|
items = where('items.status > 0 AND items.expires_at < ? AND items.expired_at IS NULL AND (winning_bid_id IS NULL OR winner_id IS NULL)', Time.now)
unless client.nil?
items.where('items.client_id = ?', client.id)
end
}
它被称为Item.expired_not_marked nil
. 当我从 IRB 运行它时,我得到了很多结果,但它显示 SQL 查询被执行为:
SELECT `items`.* FROM `items`
很明显,这不是原作者的意图。结果,相同的项目被一遍又一遍地处理。
为什么这个坏了,我该如何修复它。where 子句似乎是正确的。上述方法在item.rb
模型内。