当我想使用 DataMapper 进行 OR 查询时,我使用
result = MyModel.all(:first_name.like => '%john%') + MyModel.all(:last_name.like => '%john%')
这工作正常并且只生成一个 SQL 查询。如何使用数组中给定的属性创建相同的结果?
result = [ :first_name, :last_name ].reduce([]) do |sum, prop|
sum + MyModel.all(prop.like => '%john%')
end
虽然这可行,但它使用两个单独的 SQL 查询,这不是我想要的。有没有办法在循环中创建这样一个“惰性”查询?