2012-07-27 69 views
0

我有一個Rails網站有三個表格:用戶,任務和TaskInstance。任務表就像任務的主要列表,不與任何特定的用戶耦合,而TaskInstance表包含指示用戶完成特定任務的記錄。換句話說,TaskInstance具有用戶標識,任務標識和完成狀態(布爾值)。用戶有很多TaskInstances。將新數據添加到數據庫的最具可擴展性的方法?

我想讓管理員添加新的任務。這樣做應該爲每個用戶爲該任務創建一個新的TaskInstance。但是,這聽起來不像是會很好地擴展。假設我有五萬個用戶,創建一個新的任務需要立即創建五萬個TaskInstances。

如果某種延遲加載可以完成,那將是一件好事,但我不知道該怎麼做。我可以在登錄時做到這一點。當用戶登錄時,檢查是否創建了新的任務;如果是這樣,請僅爲該特定用戶創建一個新的TaskInstance。但是那麼在新任務創建時已經登錄的用戶呢?

我想我只是想知道這種問題的首選方法是什麼。

如果需要,可將其移至社區wiki。

+0

如果該用戶沒有對Task執行任何操作,則他沒有TaskInstance。那麼爲什麼要創建一個前期?只有在需要保存的情況下才能創建實例。 – 2012-07-27 09:18:38

+0

但我希望能夠向用戶展示他們已完成和未完成的任務。如果特定任務不存在TaskInstance,我將如何顯示該任務的完成狀態? – 2012-07-27 09:34:03

+2

只要檢查用戶的TaskInstance是否已經存在 - 如果不存在,那麼用戶還不能完成它。 – klaffenboeck 2012-07-27 09:34:51

回答

2

不要直接創建TaskInstance,而只能在需要時才創建。由於無論如何都會創建新的Task,因此無論是否存在TaskInstance,它都可以顯示給任何用戶。只要用戶決定以Task開頭,TaskInstance應該被實例化。

相關問題