我試圖設置一個特定的用戶帳戶爲「沙盒」,這意味着我想回滾用戶在會話銷燬時所做的任何數據庫更改。在Rails 4中,你將如何記錄和撤消特定於一個用戶的所有數據庫更改?
我看着使用Paper Trail創業板,但我不確定它可以用於回滾特定於某個用戶的更改。
這可能嗎?
我試圖設置一個特定的用戶帳戶爲「沙盒」,這意味着我想回滾用戶在會話銷燬時所做的任何數據庫更改。在Rails 4中,你將如何記錄和撤消特定於一個用戶的所有數據庫更改?
我看着使用Paper Trail創業板,但我不確定它可以用於回滾特定於某個用戶的更改。
這可能嗎?
做到這一點的一種方法是在活動表中記錄用戶的所有活動。然後,當一個沙箱用戶被刪除時,你可以通過該用戶的活動,刪除相應的實體。
bundle g model Activity user:references thing:references{polymorphic}:index
當會話被破壞:
current_user_activities = Activity.where(user_id: current_user.id)
current_user_activities.each do |activity|
activity.thing.destroy!
end
current_user_activities.destroy_all
你的意思是刪除其所有相關記錄?或者他們實際上在操縱模式? –
聽起來就像你只需要一個沙箱用戶的默認值,並且當他們註銷時你只需將他們的db重置爲該狀態。 – DickieBoy
@KevinBrown:這個想法是「沙箱用戶」可能對已存在的記錄進行更改,並且不是特定於該用戶的記錄。例如,假設有一個「Article」對象,由另一個用戶創建,「sandbox用戶」進行更新。我希望該更新能夠回滾,但不會刪除整個「Article」記錄。 –