Я думаю, что вы можете достичь этого, только изменив statement_timeout
для всего соединения, а затем вернув его обратно:
def execute_expensive_query
ActiveRecord::Base.connection.execute 'SET statement_timeout = 600000' # 10 minutes
# DB query with long execution time
ensure
ActiveRecord::Base.connection.execute 'SET statement_timeout = 5000' # 5 seconds
end
На уровне БД вы можете установить statement_timeout
для текущей транзакции только согласно это руководство :
BEGIN;
SET LOCAL statement_timeout = 250;
...
COMMIT;