Вы можете просто проверить текущее время в вашем контроллере, например:
def show
@last_refresh ||= DateTime.now
@current ||= MyModel.get_random
@current = MyModel.get_random if (DateTime.now - @last_refresh) > 5.minutes
end
Этот код не будет масштабироваться для большего количества серверов (так как он зависит от переменных класса для хранения данных), поэтомув действительности вы не хотели бы хранить две переменные класса в чем-то вроде Redis (или даже Memcache) - это для высокой производительности.Действительно зависит от того, насколько точно вам это нужно и сколько производительности вам нужно.Вы также можете использовать свою обычную базу данных для хранения времени истечения, а затем загрузить запись, текущее время которой.