Class: ExisRay::Current
- Inherits:
-
ActiveSupport::CurrentAttributes
- Object
- ActiveSupport::CurrentAttributes
- ExisRay::Current
- Defined in:
- lib/exis_ray/current.rb
Overview
Clase base para la gestión del contexto de negocio (User, ISP, Correlation). Debe ser heredada por la aplicación host (ej: class Current < ExisRay::Current).
Instance Method Summary collapse
- #correlation_id=(id) ⇒ Object
-
#correlation_id? ⇒ Boolean
Usa present? intencionalmente: un string vacío no es un correlation_id válido, a diferencia de user_id/isp_id donde 0 es un valor legítimo.
- #isp ⇒ Object
- #isp=(object) ⇒ Object
- #isp? ⇒ Boolean
- #isp_id=(id) ⇒ Object
- #user ⇒ Object
-
#user=(object) ⇒ Object
— Helpers de Objetos (Lazy Loading con cache por request) — Estos métodos asumen que la app host tiene modelos ::User e ::Isp.
- #user? ⇒ Boolean
-
#user_id=(id) ⇒ Object
— Setters con Hooks —.
Instance Method Details
#correlation_id=(id) ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/exis_ray/current.rb', line 47 def correlation_id=(id) super assign_session_request_id(id) ActiveResource::Base.headers["CorrelationId"] = sanitize_header_value(id) if defined?(ActiveResource::Base) PaperTrail.request.controller_info = { correlation_id: id } if defined?(PaperTrail) sync_reporter_correlation_id(id) end |
#correlation_id? ⇒ Boolean
Usa present? intencionalmente: un string vacío no es un correlation_id válido, a diferencia de user_id/isp_id donde 0 es un valor legítimo.
92 93 94 |
# File 'lib/exis_ray/current.rb', line 92 def correlation_id? correlation_id.present? end |
#isp ⇒ Object
75 76 77 78 79 80 |
# File 'lib/exis_ray/current.rb', line 75 def isp return nil if isp_id.nil? return nil unless defined?(::Isp) && ::Isp.respond_to?(:find_by) @isp_object ||= ::Isp.find_by(id: isp_id) # rubocop:disable Naming/MemoizedInstanceVariableName end |
#isp=(object) ⇒ Object
71 72 73 |
# File 'lib/exis_ray/current.rb', line 71 def isp=(object) self.isp_id = object&.id end |
#isp? ⇒ Boolean
86 87 88 |
# File 'lib/exis_ray/current.rb', line 86 def isp? !isp_id.nil? end |
#isp_id=(id) ⇒ Object
39 40 41 42 43 44 45 |
# File 'lib/exis_ray/current.rb', line 39 def isp_id=(id) @isp_object = nil super return unless defined?(ActiveResource::Base) ActiveResource::Base.headers["IspId"] = sanitize_header_value(id) end |
#user ⇒ Object
64 65 66 67 68 69 |
# File 'lib/exis_ray/current.rb', line 64 def user return nil if user_id.nil? return nil unless defined?(::User) && ::User.respond_to?(:find_by) @user_object ||= ::User.find_by(id: user_id) # rubocop:disable Naming/MemoizedInstanceVariableName end |
#user=(object) ⇒ Object
— Helpers de Objetos (Lazy Loading con cache por request) — Estos métodos asumen que la app host tiene modelos ::User e ::Isp. Memoizan el objeto en @user_object/@isp_object, que se limpian en el bloque resets al final de cada request/job, y al asignar un nuevo user_id/isp_id.
60 61 62 |
# File 'lib/exis_ray/current.rb', line 60 def user=(object) self.user_id = object&.id end |
#user? ⇒ Boolean
82 83 84 |
# File 'lib/exis_ray/current.rb', line 82 def user? !user_id.nil? end |
#user_id=(id) ⇒ Object
— Setters con Hooks —
30 31 32 33 34 35 36 37 |
# File 'lib/exis_ray/current.rb', line 30 def user_id=(id) @user_object = nil super ActiveResource::Base.headers["UserId"] = sanitize_header_value(id) if defined?(ActiveResource::Base) return unless defined?(PaperTrail) PaperTrail.request.whodunnit = id end |