手动构建活动记录对象

时间:2015-02-23 16:34:27

标签: ruby-on-rails ruby activerecord

我有一个没有使用索引的活动记录查询,导致应用超时。

domain.services.where.not(parent_service_id: nil).group('services.type').select('services.type, count(services.id) as user_count')

=> [#<ServiceModel id: nil, type: "ServiceModelName">]

我有一个自定义sql命令,强制使用parent_service_id上​​的索引

ActiveRecord::Base.connection.execute("SELECT services.type, count(services.id) as user_count FROM services where domain_id = 21227 AND parent_service_id IS NOT NULL GROUP BY services.type")

=> {"type"=>"ServiceModelName", "user_count"=>"2810"}

快速返回我需要的信息。但是,它返回哈希而不是模型。如何构建一个activerecord对象,以便我的方法可以返回类似的结果?

1 个答案:

答案 0 :(得分:0)

而不是connection.execute,您应该能够做到:

ServiceModel.find_by_sql(sql)