ope*_*per 1 ruby ruby-on-rails ruby-on-rails-5
我想根据以下场景在第三方服务上创建和删除用户
在第 3 方创建用户
active来自inactive(我的用户模型上有一个名为 的列is_active)删除第 3 方用户
inactive看起来我可以利用after_commit回调,但是我如何在after_commit该操作中识别create,update或者delete
对此的任何帮助都会有所帮助。
不要为此使用回调——你会后悔的。
回调的主要问题是:
当您似乎也在处理第三方 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
Run Code Online (Sandbox Code Playgroud)
它们只执行一项工作,并且易于测试,并且只有在您明确希望它们执行时才会触发。ActiveJob 实际上就是这种模式的一个例子。
| 归档时间: |
|
| 查看次数: |
927 次 |
| 最近记录: |