A container of attribute encryption options.
It validates and serves attribute encryption options.
Methods
Attributes
[RW] | previous_schemes |
Class Public methods
new(key_provider: nil, key: nil, deterministic: nil, downcase: nil, ignore_case: nil, previous_schemes: nil, **context_properties)
📝 Source code
# File activerecord/lib/active_record/encryption/scheme.rb, line 13
def initialize(key_provider: nil, key: nil, deterministic: nil, downcase: nil, ignore_case: nil,
previous_schemes: nil, **context_properties)
# Initializing all attributes to +nil+ as we want to allow a "not set" semantics so that we
# can merge schemes without overriding values with defaults. See +#merge+
@key_provider_param = key_provider
@key = key
@deterministic = deterministic
@downcase = downcase || ignore_case
@ignore_case = ignore_case
@previous_schemes_param = previous_schemes
@previous_schemes = Array.wrap(previous_schemes)
@context_properties = context_properties
validate_config!
end
🔎 See on GitHub
Instance Public methods
deterministic?()
📝 Source code
# File activerecord/lib/active_record/encryption/scheme.rb, line 38
def deterministic?
@deterministic
end
🔎 See on GitHub
downcase?()
📝 Source code
# File activerecord/lib/active_record/encryption/scheme.rb, line 34
def downcase?
@downcase
end
🔎 See on GitHub
fixed?()
📝 Source code
# File activerecord/lib/active_record/encryption/scheme.rb, line 42
def fixed?
# by default deterministic encryption is fixed
@fixed ||= @deterministic && (!@deterministic.is_a?(Hash) || @deterministic[:fixed])
end
🔎 See on GitHub
ignore_case?()
📝 Source code
# File activerecord/lib/active_record/encryption/scheme.rb, line 30
def ignore_case?
@ignore_case
end
🔎 See on GitHub
key_provider()
📝 Source code
# File activerecord/lib/active_record/encryption/scheme.rb, line 47
def key_provider
@key_provider ||= begin
validate_keys!
@key_provider_param || build_key_provider
end
end
🔎 See on GitHub
merge(other_scheme)
📝 Source code
# File activerecord/lib/active_record/encryption/scheme.rb, line 54
def merge(other_scheme)
self.class.new(**to_h.merge(other_scheme.to_h))
end
🔎 See on GitHub
to_h()
📝 Source code
# File activerecord/lib/active_record/encryption/scheme.rb, line 58
def to_h
{ key_provider: @key_provider_param, key: @key, deterministic: @deterministic, downcase: @downcase, ignore_case: @ignore_case,
previous_schemes: @previous_schemes_param, **@context_properties }.compact
end
🔎 See on GitHub
with_context(&block)
📝 Source code
# File activerecord/lib/active_record/encryption/scheme.rb, line 63
def with_context(&block)
if @context_properties.present?
ActiveRecord::Encryption.with_encryption_context(**@context_properties, &block)
else
block.call
end
end
🔎 See on GitHub