执行`sum_by_sql`的最佳方法是什么?

时间:2010-08-31 12:52:21

标签: ruby-on-rails

在Rails 2.3.8中,有一个类方法ActiveRecord::Base.count_by_sql,允许执行自定义SELECT count(*) ...。使用此方法执行自定义SELECT sum(...) ...查询是否可以保存?如果没有,应该怎么做才能执行这样的查询? ActiveRecord::Base.connection.execute是唯一的选择吗?

感谢。

编辑:我想执行的查询有另一个嵌套查询。这就是为什么我认为来自ActiveRecord::Calculations的方法还不够。

2 个答案:

答案 0 :(得分:0)

检查ActiveRecord::Calculations。 API文档为here

您可以执行以下操作(假设您拥有User型号):

User.maximum(:updated_at)
# Generates:
# SELECT max(`users`.updated_at) AS max_updated_at FROM `users`

答案 1 :(得分:0)

来自select_value模块的

ActiveRecord::ConnectionAdapters::DatabaseStatements就是答案。它返回查询返回的第一行第一列中的值。 select_value会返回String,因此可能需要转换。

示例:

ActiveRecord::Base.connection.select_value("Some complicated sql")