2011-04-29 18 views
1

如何根據一天中的時間或哪一天更新數據庫中的屬性。我有三個能量,飢餓和幸福的屬性,我想每小時減少十個,但我不知道如何去做這件事。我知道數據庫中有時間戳,但我真的不知道如何使用它們。另外我想根據他們的工作每天改變球員技能。所以,如果你有這份工作,每天加2智力。但我不知道如何每天補充2。如果有人能夠幫助我解決這個問題,我很樂意。我將不勝感激。rails-如何根據時間/日期更新屬性

回答

1

有實現這一目標的兩種常見的,但根本不同的方式:

  • 在每個請求,模擬自上次請求已通過的時間。如果用戶提出兩個三小時的請求,模擬三個小時的時間通過減去30個快樂(10 /小時3小時)一次。這是資源密集程度較低,但需要更多思考的部分。對於像「每小時減少10個值」那樣簡單的事情並不難,但更復雜的交互更難以建模。

  • 運行一個cron作業,它在每個小時每小時都在您的程序中調用一個動作,從每個帳戶中扣除10個快樂。這在概念上更簡單,但如果您有許多用戶,則會涉及很多開銷,特別是其中一些用戶長時間處於空閒狀態時。

3

幾個選項:

  • 的cronjob:,你可以設置你的cronjob直接通過SQL腳本(在安裝方面出所有的可能是最簡單的解決方案)訪問數據庫或者先通過您的rails應用程序(例如,如果您需要在更新數據庫之前運行其他業務邏輯 - 您提到了有關基於用戶作業更新數據庫的內容)。後一種方法見post

  • 後臺任務:Starling/WorklingBackgroundrb看看。您可以使用其中的任何一種運行後臺任務,以定期更新您的數據庫。