класс ActiveRecord::Encryption::Properties
Это обёртка для хэша свойств шифрования. Она используется Key (общедоступные теги) и Message (заголовки).
Поскольку свойства сериализуются в сообщениях, для повышения эффективности хранения важно, чтобы их ключи были как можно короче. Она определяет аксессоры для общих свойств, которые будут сохранять эти ключи очень короткими, одновременно предоставляя читаемое имя.
message.headers.encrypted_data_key # instead of message.headers[:k]
См. +Properties#DEFAULT_PROPERTIES+, Key, Message
Константы
- ALLOWED_VALUE_CLASSES
- DEFAULT_PROPERTIES
-
Для каждой записи генерируется аксессор, отображающий полное имя
Общедоступные методы класса
# File activerecord/lib/active_record/encryption/properties.rb, line 42
def initialize(initial_properties = {})
@data = {}
add(initial_properties)
end Общедоступные методы экземпляра
# File activerecord/lib/active_record/encryption/properties.rb, line 50
def []=(key, value)
raise Errors::EncryptedContentIntegrity, "Properties can't be overridden: #{key}" if key?(key)
validate_value_type(value)
data[key] = value
end Установить значение для заданного ключа
Будет вызвано исключение EncryptedContentIntegrity если значение уже существует
# File activerecord/lib/active_record/encryption/properties.rb, line 62
def add(other_properties)
other_properties.each do |key, value|
self[key.to_sym] = value
end
end # File activerecord/lib/active_record/encryption/properties.rb, line 68 def to_h data end
# File activerecord/lib/active_record/encryption/properties.rb, line 56
def validate_value_type(value)
unless ALLOWED_VALUE_CLASSES.find { |klass| value.is_a?(klass) }
raise ActiveRecord::Encryption::Errors::ForbiddenClass, "Can't store a #{value.class}, only properties of type #{ALLOWED_VALUE_CLASSES.inspect} are allowed"
end
end
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.