2013-04-06 4 views
0

Я собираюсь использовать timeout, как мне было сообщено в моем first question. Поэтому, если человек просматривает сообщение, он будет записан в список людей, которые просматривают один и тот же пост, и эта запись будет истекла через определенный промежуток времени (например, 5 минут).Автоматически удалять запись через несколько минут

Кто-то посоветовал мне использовать cache для достижения этого, но я думаю, что постараюсь сделать это с ассоциациями Rails, например, следующим образом.

post has_many readers

И в PostsController#Show

@post.readers.create(user: current_user)и мне нужно, чтобы сделать эту запись, чтобы быть истек через 5 минут, так что current_user будут удалены из post.readers автоматически.

Это правильный подход? Также, как мне установить модель Reader, чтобы любая запись была удалена через 5 минут?

ответ

1

Вы можете просто получить последние читатель, когда вы делаете запрос:

post.readers.where('created_at >= ?', 5.minutes.ago) 

Тогда вы можете иметь фоновое задание, чтобы сделать уборку.

+0

Но как я могу определить, когда я должен запустить «очистку», чтобы устранить «читателей»? –

+0

Задача запускается периодически (например, каждые 24 часа) и удаляет все записи в таблице 'читателей', которые были созданы до 5 минут назад. – alf

+0

Спасибо. Я думаю, что это самый простой способ справиться с этой проблемой. Но я все еще немного не уверен, как я могу периодически запускать определенную работу в своем приложении, не прибегая к призыву к действию. –

Смежные вопросы