rails-как обновить атрибуты на основе времени / дня - PullRequest
1 голос
/ 29 апреля 2011

Как бы вы обновили атрибуты в вашей базе данных в зависимости от времени суток или того, какой сегодня день. У меня есть три атрибута: энергия, голод и счастье, которые я хочу уменьшить на десять каждый час, но я не знаю, как это сделать. Я знаю, что в базе данных есть временные метки, но я не знаю, как их использовать. Также я хочу каждый день менять навыки игроков в зависимости от их работы. Так что, если у вас есть эта работа, добавляйте 2 к интеллекту каждый день. Но я не знаю, как добавить это 2 каждый день. Я был бы рад, если бы кто-нибудь помог мне с этой проблемой. Я был бы очень признателен.

Ответы [ 2 ]

3 голосов
/ 29 апреля 2011

Пара опций:

  • cronjob: Вы можете настроить свой cronjob для доступа к базе данных напрямую через сценарий SQL (возможно, самое простое решение из всехс точки зрения настройки) или сначала просмотрите приложение rails (например, если вам нужно запустить дополнительную бизнес-логику перед обновлением базы данных - вы упомянули что-то об обновлении базы данных на основе задания пользователя).См. post для последнего подхода.

  • Фоновое задание: Взгляните на Скворец / Рабочий или Backgroundrb .Вы можете использовать любой из них для запуска фоновой задачи, которая может регулярно обновлять вашу базу данных.

1 голос
/ 29 апреля 2011

Существует два распространенных, но принципиально различных способа достижения этого:

  • Во время каждого запроса моделируйте количество времени, прошедшее с момента последнего запроса.Если пользователь делает два запроса с интервалом в три часа, смоделируйте прохождение трех часов, вычитая 30 счастья (10 раз в час по 3 часа) за раз.Это менее ресурсоемкий, но требует немного больше думать с вашей стороны.Это не сложно для чего-то такого простого, как «понизить значение на 10 каждый час», но более сложные взаимодействия сложнее моделировать.Запрограммируйте каждый час на каждый час, чтобы вычесть 10 баллов из каждого аккаунта.Концептуально это проще, но требует много накладных расходов, если у вас много пользователей, особенно когда некоторые из них простаивают в течение длительных периодов.

...