當用戶洗掉我系統上的內容時,我想記錄一些資訊。
前提很簡單,如果我洗掉它,我會把它記錄在log_delete表中。
我知道可以使用 來做到這一點before_destroy,但是,我希望實作是透明的,并且不需要添加before_destroy到每個模型中。
這樣,如果開發人員創建一個新模型,他就不必擔心將其放入。
有沒有辦法before_destroy對所有模型使用類似的東西?
uj5u.com熱心網友回復:
你應該有ApplicationRecord這樣的:
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
# Maybe some other stuff...
end
作為所有 ActiveRecord 模型的基類。
你可以把一個before_destroy那里,然后回呼可以拉任何資訊出來self和self.class它需要登錄。
ApplicationRecord 自 AFAIK,Rails 5 以來一直是標準做法,所以它應該到位,如果不是,你真的應該添加一個。
或者,您可以使用資料庫觸發器并讓資料庫來處理它。我傾向于認為觸發器是這類事情所屬的地方,并且具有更難繞過的好處(有意或無意地)。不利的一面是,這需要少量特定于資料庫的編碼,但這在任何重要的應用程式中幾乎是不可能避免的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/406650.html
標籤:
