Rails:如何过滤搜索结果而不将其加载到内存中

时间:2017-08-11 20:43:21

标签: ruby-on-rails ruby

我有一个模型,我们称之为本例的Product模型。我在这个数据库中有大约200k条记录,其中一半是activeactive: true),一半不是。当用户搜索产品时,我只希望显示活动产品。我的代码看起来像这样:

def self.search
  products = Products.where(active: true).order("`foo` = 'BAR'")
  products = products.where(other_filters)
  products = products.where(more_filters)
  ..
end

这样做会将前100k个活动的内容加载到内存中(在第一个puts products.size返回where后执行100000),然后使用链接{{{{{{{{{ 1}}子句并在末尾分页,以便只显示25个。有没有更有效的方法来过滤这些结果?

0 个答案:

没有答案