rails上的ruby方法在过滤之前返回完整的数据集?

时间:2018-03-26 18:08:35

标签: ruby-on-rails ruby postgresql activerecord

数据库: PostgreSQL 9.6.6
Rails版本: 5.0.2
Ruby版本: 2.3.1p112(2016-04-26修订版54768)[x86_64-darwin16]

我正在调试一个返回数据子集的应用程序代码,我看到的一个问题是Rails' Active Record在过滤之前返回所有数据。我调试的代码行是:

@al ||= CC.find(@e.mcc.first.cc_id).additional_languages&.split(',') || []

.first方法从表中检索所有数据,然后拉出第一条记录。表中有超过9100万行,如果查询在抓取.first行之前没有将所有这些行拉回来,我希望如此。

是否有一个列表或一些文档会告诉我哪些rails方法返回完整的结果集,哪些不返回?

1 个答案:

答案 0 :(得分:0)

找出解决方案。使用.find_by()解决了我遇到的问题。代码行现在看起来像这样:

@al ||= CC.find_by(id: (MCC.find_by(export_id: @e.id).cc_id)).additional_languages&.split(',') || [] 

谢谢大家的帮助。