Spec-Zone.ru › Ruby on Rails 7.1

класс 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

Для каждой записи генерируется аксессор, отображающий полное имя

Публичные методы класса

new(initial_properties = {}) Показать исходный код
# File activerecord/lib/active_record/encryption/properties.rb, line 42
def initialize(initial_properties = {})
  @data = {}
  add(initial_properties)
end

Публичные методы экземпляра

[]=(key, value) Показать исходный код
# 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 если значение уже существует

add(other_properties) Показать исходный код
# 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
to_h() Показать исходный код
# File activerecord/lib/active_record/encryption/properties.rb, line 68
def to_h
  data
end
validate_value_type(value) Показать исходный код
# File activerecord/lib/active_record/encryption/properties.rb, line 56
def validate_value_type(value)
  unless ALLOWED_VALUE_CLASSES.include?(value.class) || ALLOWED_VALUE_CLASSES.any? { |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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API