module ActiveRecord::Encryption::Configurable
def configure(primary_key:, deterministic_key:, key_derivation_salt:, **properties) # :nodoc:
def configure(primary_key:, deterministic_key:, key_derivation_salt:, **properties) # :nodoc: config.primary_key = primary_key config.deterministic_key = deterministic_key config.key_derivation_salt = key_derivation_salt context.key_provider = ActiveRecord::Encryption::DerivedSecretKeyProvider.new(primary_key) properties.each do |name, value| [:context, :config].each do |configurable_object_name| configurable_object = ActiveRecord::Encryption.send(configurable_object_name) configurable_object.send "#{name}=", value if configurable_object.respond_to?("#{name}=") end end end
def encrypted_attribute_was_declared(klass, name) # :nodoc:
def encrypted_attribute_was_declared(klass, name) # :nodoc: self.encrypted_attribute_declaration_listeners&.each do |block| block.call(klass, name) end end
def excluded_from_filter_parameters?(filter_parameter)
def excluded_from_filter_parameters?(filter_parameter) ActiveRecord::Encryption.config.excluded_from_filter_parameters.find { |excluded_filter| excluded_filter.to_s == filter_parameter } end
def install_auto_filtered_parameters_hook(application) # :nodoc:
def install_auto_filtered_parameters_hook(application) # :nodoc: ActiveRecord::Encryption.on_encrypted_attribute_declared do |klass, encrypted_attribute_name| filter_parameter = [("#{klass.model_name.element}" if klass.name), encrypted_attribute_name.to_s].compact.join(".") application.config.filter_parameters << filter_parameter unless excluded_from_filter_parameters?(filter_parameter) end end
def on_encrypted_attribute_declared(&block)
...
ActiveRecord::Encryption.on_encrypted_attribute_declared do |klass, attribute_name|
=== Example:
Register callback to be invoked when an encrypted attribute is declared.
def on_encrypted_attribute_declared(&block) self.encrypted_attribute_declaration_listeners ||= Concurrent::Array.new self.encrypted_attribute_declaration_listeners << block end