Robot.count - это действительно то решение, которое вам нужно.
Читая один из приведенных выше комментариев, похоже, вы неправильно понимаете, как работает .count.Он возвращает счетчик всех строк в таблице, только если нет параметров.
, но если вы передаете те же условия, которые вы передаете всем / find, например:
Robot.count(:conditions => {:a => 'b'})
.count () вернет количество строк, соответствующих заданным условиям.Просто чтобы быть очевидным - вы можете даже сохранить условный хеш как переменную для передачи в оба - чтобы уменьшить дублирование, так:
conds = {:a => 'b'}
@robots = Robot.all(:conditions => conds, :limit => 50)
@num_robots = Robot.count(:conditions => conds)
При этом вы не можете сделать после-факт рассчитывать на набор результатов (как в вашем примере).то есть вы не можете просто выполнить запрос и спросить его, сколько строк было бы найдено.Вы на самом деле должны звонить .count нарочно.