我想根據以下場景在 3rd 方服務上創建和洗掉用戶
在第 3 方創建用戶
- 在應用程式中創建用戶時
- 標記為
activefrominactive(我的用戶模型上有一列名為is_active)
洗掉第 3 方的用戶
- 當用戶從應用程式中洗掉時
- 標記為
inactive
看起來我可以使用after_commit回呼,但我如何識別after_commit該動作是create,update或者delete
對此的任何幫助都會有所幫助。
uj5u.com熱心網友回復:
不要為此使用回呼 - 你會后悔的。回呼的主要問題是:
- 沒有背景關系 - 您實際上不知道應用程式中發生了什么。
- 當回呼實際觸發時很難控制,更重要的是當您不希望它觸發時(例如加載裝置時)。
- 它對模型承擔了很大的責任。
- 您不能獨立于創建/更新/銷毀記錄來測驗回呼邏輯。
當您似乎也在處理第三方 API 時,我真的不能低估這一點。當您觸及應用程式邊界時使用像回呼這樣的隱式機制是一個非常糟糕的主意。通過單一方法管道所有東西的整個想法也不合理。
相反,您可以使用服務物件等模式來處理模型的“轉換”。
class UserCreationService
def initialize(user)
@user = user
end
def perform
# do something with @user
end
end
class UserInactivationService
def initialize(user)
@user = user
end
def perform
# do something with @user
end
end
它們只做一項作業并且易于測驗,并且只有在您明確希望它們時才會觸發。ActiveJob 實際上就是這種模式的一個例子。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/376645.html
