Spec-Zone.ru › Ruby on Rails 8.1

класс ActiveRecord::Encryption::Properties

Родительский класс:
Object

Это оболочка для хеша свойств шифрования. Она используется в 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