2008-12-24 140 views
0

我有一個拍賣模型有幾個屬性,其中兩個是current_auction:布爾值scheduled_start:datetime。如何使布爾值(默認爲false)在scheduled_start變爲當前時間時變爲true?請告訴我,如果你需要更多的信息。我假設我需要使用script/runner,但沒有經驗。根據另一個屬性在後臺設置模型屬性?

回答

0

我不會將current_auction作爲屬性存儲。 Current_auction是一個取決於scheduled_start時間和當前時間的狀態。不要將其放在數據庫中,而應將其添加爲模型中的方法,將scheduled_start與當前時間進行比較,並根據計算結果返回true/false。

如果您需要根據是否爲最新值來進​​行選擇,請使用取決於scheduled_start時間而非當前/不是當前值的選擇邏輯。

0

很可能,你根本不需要它在數據庫中,就像tvanfosson說的那樣。

但是如果你在數據庫中需要它(比如說你需要用Sphinx來搜索它),你可能需要一個數據庫觸發器。有關信息,請參閱MySQL 5.0 Reference Maunual(假設您使用的是MySQL)。

對於需要更復雜邏輯的事情,我會設置一個排隊系統,並在隊列中添加一條消息來更新after_save鉤子中的屬性。這樣會觸發更新,但在返回給用戶之前並未等待更新完成。我有一個question on asynchronous queues,我最終使用Starling和Workling。

相關問題