Quiero crear y eliminar el usuario en un servicio de terceros en función de los siguientes escenarios
crear usuario en un tercero
active desde inactive (tengo una columna en mi modelo de Usuario llamada is_active )eliminar usuario en un tercero
inactive parece que puedo hacer uso de la devolución de llamada after_commit , pero ¿cómo identifico en after_commit que la acción es create , update o delete ?
Cualquier ayuda en esto será útil.
No utilice devoluciones de llamada para esto, se arrepentirá.
El principal problema con las devoluciones de llamada son:
Realmente no puedo subestimar esto cuando parece que también estás tratando con una API de terceros. Usar un mecanismo implícito como devoluciones de llamada cuando estás tocando el límite de la aplicación es una muy mala idea. La idea de canalizar todo a través de un solo método tampoco es buena.
En su lugar, puede usar patrones como objetos de servicio para manejar las "transformaciones" del modelo.
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 endEstos hacen un solo trabajo y son fáciles de probar y solo se activarán cuando usted lo desee explícitamente. ActiveJob es en realidad un ejemplo de este patrón.