Rails gurus: Я только что обнаружил named_scope
благодаря другому пользователю SO.:)
Я хотел бы получить подсчет ряда строк, т.е. a SELECT COUNT(*)
. Кроме того, я хочу, чтобы все еще можно было объединить названные области в вызове.
Является ли это законным (хотя и странным) использованием именованной области?
named_scope :count, :select => "COUNT(*) as count_all"
Итак, я могу сделать (например):
@foobar = Foobar.count.scope.scope.scope
Доступ к счету осуществляется через @foobar.first.count_all
.
(Отредактировано для обращения к комментариям Аллана)
Вы можете сделать:
@foobar = Foobar.scope.scope.scope.size
Но это вызовет запрос результата, а не более быстрый запрос SELECT COUNT(*)
. У меня есть большое количество строк в базе данных, которую я запрашиваю.
Есть ли лучший способ сделать это?