Не уверен, что AR поддерживает кэширование запросов для #execute, возможно, вы захотите покопаться в документации.
В любом случае, что вы можете сделать, это использовать запоминание, что означает, что вы будете сохранять результаты вручную, пока не закончится текущий запрос.
сделать что-то подобное в вашей модели:
def repeating_method_with_execute
@rs ||= ActiveRecord::Base.execute(...)
end
это в основном будет запускать запрос только в первый раз, а затем сохранять ответ в @rs
, пока весь запрос не закончится.
если я не ошибаюсь, в Rails 2.x уже есть макрос с именем memoization
в ActiveRecord, который делает все это автоматически
надеюсь, что это поможет