2013-03-23 44 views
0

我有我的用戶經歷並完成一個接一個的任務並記錄結果。根據結果​​,任務可能需要擱置'x'天,然後'x'天后,它可以再次使用。有時它會在任務隊列中返回,只有'y'天,然後到期(task.active = 0)'x'天更新記錄?

使用Rails 3實現此功能的最佳方式是什麼?我正在使用Postgre。

回答

2

將模型屬性inactive_until設置爲空或未來的日期。然後一個範圍添加到模型,active,它只是檢查該字段爲nil< Time.now

現在讓別人不活躍的時間段,設置inactive_until在將來的日期。

+0

爲了更高效和可讀的查詢,可以將'active_until'作爲'NOT NULL'字段並使用遙遠的將來日期。如果Rails和Pg gem支持無限日期,則使用'+ infinity'作爲日期;否則使用最大的日期Rail和Pg寶石支持。這隻有在你的記錄中有相當大一部分記錄具有非空'active_until'字段時纔有意義;如果只有一小部分具有'active_until'設置,則可以對未設置的部分使用'null',並在'(active_until)WHERE(active_until IS NOT NULL)'上創建部分索引' – 2013-03-24 05:35:27