2010-08-31 42 views
0

在Rails 2.3.8中有一個類方法ActiveRecord::Base.count_by_sql它允許執行自定義SELECT count(*) ...。用這種方法執行定製的SELECT sum(...) ...查詢是否保存?如果不是,應該怎麼做才能執行這樣的查詢?是ActiveRecord::Base.connection.execute唯一的選擇?執行`sum_by_sql`的最佳方法是什麼?

謝謝。

編輯:我想要執行的查詢具有嵌套的另一個查詢。這就是爲什麼我相信ActiveRecord::Calculations的方法是不夠的。

回答

0

select_valueActiveRecord::ConnectionAdapters::DatabaseStatements模塊就是答案。它返回查詢返回的第一行第一列中的值。 select_value返回String,因此可能需要轉換。

例子:

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

檢查ActiveRecord::Calculations。 API文檔是here

你可以做這樣的事情(假設你有User模型):

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

感謝的答案,但它是不夠的,在我的情況。我之前沒有提到這一點,但我需要傳遞原始SQL(至少我認爲是這樣)。我的查詢有另一個查詢嵌套,它看起來像這樣︰'SELECT MAX(...)FROM(這裏去嵌套查詢我不能擺脫)'。這就是爲什麼我需要像'count_by_sql'這樣的方法。 – skalee 2010-08-31 14:42:32

相關問題