Каков наилучший способ выполнить `sum_by_sql`? - PullRequest
0 голосов
/ 31 августа 2010

В Rails 2.3.8 есть метод класса ActiveRecord::Base.count_by_sql, который позволяет выполнять пользовательские SELECT count(*) .... Сохраняется ли выполнение настроенного запроса SELECT sum(...) ... с помощью этого метода? Если нет, что нужно сделать, чтобы выполнить такой запрос? ActiveRecord::Base.connection.execute единственный вариант?

Спасибо.

РЕДАКТИРОВАТЬ: запрос, который я хочу выполнить, вложен другой запрос. Вот почему я считаю, что методы из ActiveRecord::Calculations недостаточны.

Ответы [ 2 ]

0 голосов
/ 31 августа 2010

select_value из ActiveRecord::ConnectionAdapters::DatabaseStatements модуль является ответом. Возвращает значение, присутствующее в первом столбце первой строки, возвращенной запросом. select_value возвращает String, поэтому может потребоваться преобразование.

Пример:

ActiveRecord::Base.connection.select_value("Some complicated sql")
0 голосов
/ 31 августа 2010

Чек ActiveRecord::Calculations. Документы API здесь .

Вы можете сделать что-то вроде этого (если у вас есть User модель):

User.maximum(:updated_at)
# Generates:
# SELECT max(`users`.updated_at) AS max_updated_at FROM `users`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...