新手问题 寻找一个执行复杂 SQL 的 Grid 解决方案

lotusroot · April 14, 2014 · Last by 5swords replied at April 15, 2014 · 2170 hits

在做一个分析类项目,要执行复杂 SQL 查询,虽然通过 ActiveRecord 的 find_by_sql 可以执行 SQL,但返回结果受到 Model 的限制,而期望 SQL 返回的是组合多表字段的 Grid,虽然可以考虑把 SQL 加以分解执行,但需要额外写程序将不同返回 Model 内容加以合并,如此执行效率就打大折扣了,所以,请教高手,如何解决这个问题?

貌似解决方法很简单,还是用 find_by_sql 执行复杂 SQL,然后用 read_attribute 读出来

楼上读取也是可行的,或直接将查询的字段 as model 对应属性值,程序执行效率比复杂的 SQL 效率来讲小的多吧

这个贴的 22 楼,我写了个 trytry。一般情况下 我都在 model 里写,分页后没怎么考虑效率问题。

def self.collect_data(search_result)
  search_result.collect do |r|
    {
      'field1' => r.trytry('b.c.d.e'),
      'field2' => r.trytry('b.c.f'),
      ...
    }
  end
end

当然也可以考虑 把 field1 和 b.c.d.e 的这个关系保存起来,命名一个 collection_name, 给 arel 的结果集加上 collect_data(collection_name)

You need to Sign in before reply, if you don't have an account, please Sign up first.