2012-08-13 54 views
0

我正在使用Rails應用程序,用戶必須填寫兩個或更多屏幕才能註冊。註冊數據分佈在兩個表中的兩個或三個記錄中。清理部分註冊

當然,用戶可以在註冊完成之前進行紓困。這在強制性列中可檢測爲空項。

什麼是「Rails方式」在合理的延遲(幾個小時)後清理這些部分完整的註冊?

如果它有所作爲,我在Heroku上部署。

回答

2

我不知道它是否是「rails方式」,但我認爲創建rake任務並通過cron job定期運行它可能足以滿足您的描述。如果你正在進行測試,你甚至可以像其他代碼一樣test the rake tasks

+0

謝謝。我現在看到Heroku有一個rake任務調度程序,非常適合這個。 – Gene 2012-08-13 23:45:14

2

您是否考慮過爲「正在進行」的用戶提供單獨的表格?然後將它切碎並在完成時塗抹。

然後,您可以簡單地通過刪除正在進行中的表格中有超過一天的update_at的任何內容來清理廢棄的用戶;運行rake任務的每日cron作業(或調度程序或...)可以處理此問題。這也阻止了他們在完成之前登錄,因爲他們實際上並不是用戶,直到他們完成。

作爲一個副作用,他們將無法登錄,直到他們完成,因爲他們不是真正的用戶,直到他們完成。當然,您可能需要調整您在一個控制器內部的處理current_user

這種方法也意味着您可以將NOT NULL約束添加到您的強制列作爲額外的偏執狂等級。

+0

謝謝。我的註冊很複雜,分佈在三張桌子上。因此,對於我來說,做一個包含'delete'查詢的rake任務更有意義,該查詢可以識別不完整的reg與一天內的「最後一次觸摸」時間。在不同的環境中,你可能是正確的答案。 – Gene 2012-08-13 23:47:58