2011-02-28 65 views
0

我似乎已經把自己變成了一片鹹菜。我試圖編寫一種方式來銷燬用戶,但仍保留其內容。Rails 3 - 刪除用戶但保留內容?

目前在我的應用程序中,公司有很多用戶,而用戶屬於一家公司。一個公司可以讓用戶閒置,如果他們需要,但我也想爲公司能夠從他們的帳戶中終止的情況下刪除用戶等

我要簡單地說,對破壞,將外國company_id鍵設置爲在用戶表中爲零。但是,通過這樣做,公司將失去這位老用戶的工作,這是不可能發生的,因爲通過對company_id執行查詢來填充信息。

有沒有人想過用類似的數據庫設計來解決這個問題的一個很好的方法?或者我將不得不回到原點,找出更有效的方法。

謝謝

回答

3

這實際上是一個比數據模型問題更多的接口問題。可以肯定的是,如果你需要保留他們的信息,你實際上不應該刪除/銷燬這些用戶。但是,如果您需要一種將用戶從不活動狀態移除的方式,您可以添加另一個「終止」狀態的選項。那麼它只取決於你在前端顯示這些終止用戶的方式和位置(或者你可能從不顯示它們)。

+0

您還可以添加一個只有在需要驗證用戶處於活動狀態時纔會帶來「未終止」員工的視圖。 – PedroC88 2011-02-28 21:25:46

+0

好吧,這絕對是我將要採取的方向。我認爲有可能是與用戶試圖用一個新公司重新註冊的問題,但在現實中,他們可能會使用電子郵件從一個新的領域。謝謝傑米。 – Kombo 2011-02-28 21:27:33

1

您可能想要簽出acts as paranoid,只需設置一個已刪除的標誌即可軟刪除用戶。這種方式行保留在數據庫中,但不會顯示在任何通用查詢結果中。

3

「軟刪除」模式可能是最簡單的方法。在這種情況下,您添加一個帶有布爾語義的字段,這意味着,本質上是「活動」或「刪除」。

爲了最小化對現有代碼的影響,可以將現有數據複製到具有更新模式的新表中,並創建一個與舊錶相同名稱的視圖,僅包括那些未標記爲已刪除的記錄;那些不需要了解「已刪除」用戶的客戶會對這些記錄保持幸福感。

+0

我使用Rails中的很多視圖。他們*非常有用。 – 2011-03-27 19:50:52

0

是可以檢出

rails3_acts_as_paranoid - 它允許您隱藏和恢復記錄而不實際刪除它們。

這是您的方案的最佳技術。