在Rails 2.3.8中,有一个类方法ActiveRecord::Base.count_by_sql
,允许执行自定义SELECT count(*) ...
。使用此方法执行自定义SELECT sum(...) ...
查询是否可以保存?如果没有,应该怎么做才能执行这样的查询? ActiveRecord::Base.connection.execute
是唯一的选择吗?
感谢。
编辑:我想执行的查询有另一个嵌套查询。这就是为什么我认为来自ActiveRecord::Calculations
的方法还不够。
答案 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")