Вопрос по кешу postresql и скрипту на ruby
Есть такой скрипт на руби
def self.cached_count
@cached_count ||= begin
table = Arel::Table.new(:pg_class)
query = table.project(table['reltuples']).where(table['relname'].eq('receipts')).to_sql
result = connection.exec_query query
result&.first&.[]('reltuples')&.to_i
end
cach_count = ReceiptsCashe.where('id > ?', self.last.id).count
page = cach_count % self.per_page > 0 ? 1 : 0
@cached_count += ( cach_count / self.per_page).to_i + page
@cached_count
end
в нем берется счетчик страниц для отображения данных в таблице с постраничным выводом в рельсах. Проблема в том, что кеш отстает от реальных данных. Размер таблицы около 500 млн записей. Я сделал дополнительную таблицу куда кладутся новые записи через after_create для модели. И из этих данных генерится финальный размер счетчика. Но проблема в том, что и этот подход плохо работает, всегда есть новые данные которые не попадают на страницу вывода. У меня такой вопрос, как можно быстро взять из большой таблицы последнюю запись, его айди или дату создания, чтобы количество страниц для таблицы всегда были актуальны.