Как сохранить временные данные для анонимных пользователей в Rails - PullRequest
2 голосов
/ 28 декабря 2010

Например, если анонимный пользователь нажмет кнопку «Мне нравится», он будет перенаправлен на страницу входа;пользователь может выбрать либо подписку, либо вход, в любом случае сервер запомнит свое действие, чтобы пользователь больше не нажимал.Данные должны быть уничтожены через 10 минут после их создания.

Как мне это реализовать?

Ответы [ 2 ]

3 голосов
/ 28 декабря 2010

Вы просто хотите сериализовать список действий, которые необходимо выполнить после создания учетной записи. Вы можете сохранить это в сеансе, постоянном кэше, таком как memcached (хотя вам не гарантировано постоянство), или пользовательской модели / таблице. На самом деле в Rails не существует единого приемлемого способа сделать это, так что вам остается только решить, как вы это реализуете.

Что вы можете сделать, если вы хотите придерживаться способа работы Rails, это установить флаг transient для записи, а затем сохранить его. Как только пользователь зарегистрируется, вы можете убрать переходный флаг. Запустите задание cron, которое уничтожит все временные записи старше 10 минут, и все ваши обратные вызовы before_destroy должны быть запущены, чтобы вы могли откатить любые изменения состояния, которые они вызвали. Это «тяжелое» решение, но оно простое в реализации и позволяет легко использовать модели Rails.

3 голосов
/ 28 декабря 2010

Я бы использовал сессий для хранения временных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...