Module: PromptSanitizer::Integrations::ActionControllerConcern
- Defined in:
- lib/prompt_sanitizer/integrations/action_controller.rb
Overview
ActionController concern — adds PII sanitization helpers to controllers.
Include in ApplicationController or a specific controller:
class ApplicationController < ActionController::Base
include PromptSanitizer::Integrations::ActionControllerConcern
end
Then in any action:
# Sanitize specific params in-place before using them:
def create
sanitize_params!(:message, :prompt)
call_llm(params[:message])
end
# Multi-turn session scoped to one action (vault cleared after block):
def chat
with_pii_session do |sess|
clean = sess.anonymize(params[:message])
response = call_llm(clean)
render json: { reply: sess.deanonymize(response) }
end
end
Instance Method Summary collapse
-
#pii_sanitizer ⇒ PromptSanitizer::Sanitizer
The Sanitizer instance used by this controller.
-
#sanitize_params!(*keys) ⇒ void
Sanitize one or more param keys in-place.
-
#with_pii_session(session_id: nil) {|session| ... } ⇒ Object
Yield a Session scoped to this action's PII vault.
Instance Method Details
#pii_sanitizer ⇒ PromptSanitizer::Sanitizer
The Sanitizer instance used by this controller. Defaults to the global PromptSanitizer.sanitizer. Override in a controller to use a custom instance.
59 60 61 |
# File 'lib/prompt_sanitizer/integrations/action_controller.rb', line 59 def pii_sanitizer PromptSanitizer.sanitizer end |
#sanitize_params!(*keys) ⇒ void
This method returns an undefined value.
Sanitize one or more param keys in-place.
35 36 37 38 39 40 41 42 |
# File 'lib/prompt_sanitizer/integrations/action_controller.rb', line 35 def sanitize_params!(*keys) keys.flatten.each do |key| next unless params[key].is_a?(String) result = pii_sanitizer.sanitize(params[key]) params[key] = result.text end end |
#with_pii_session(session_id: nil) {|session| ... } ⇒ Object
Yield a Session scoped to this action's PII vault. The vault is always cleared after the block, even on exception.
49 50 51 52 |
# File 'lib/prompt_sanitizer/integrations/action_controller.rb', line 49 def with_pii_session(session_id: nil, &block) id = session_id || "#{controller_name}##{action_name}" pii_sanitizer.session(session_id: id, &block) end |