Spec-Zone.ru › Ruby on Rails 7.0

класс ActiveSupport::ParameterFilter

Родитель:
Объект

ParameterFilter позволяет указать ключи для конфиденциальных данных из объекта типа хэш и заменить соответствующие значения. Фильтрация определённых подключаемых ключей из хэша возможна с использованием нотации точек: 'credit_card.number'. Если задан блок, каждый ключ и значение хэша и всех вложенных хэшей передаются в него, где значение или ключ могут быть заменены с помощью методов String#replace или подобных.

ActiveSupport::ParameterFilter.new([:password])
=> replaces the value to all keys matching /password/i with "[FILTERED]"

ActiveSupport::ParameterFilter.new([:foo, "bar"])
=> replaces the value to all keys matching /foo|bar/i with "[FILTERED]"

ActiveSupport::ParameterFilter.new([/\Apin\z/i, /\Apin_/i])
=> replaces the value for the exact (case-insensitive) key 'pin' and all
(case-insensitive) keys beginning with 'pin_', with "[FILTERED]".
Does not match keys with 'pin' as a substring, such as 'shipping_id'.

ActiveSupport::ParameterFilter.new(["credit_card.code"])
=> replaces { credit_card: {code: "xxxx"} } with "[FILTERED]", does not
change { file: { code: "xxxx"} }

ActiveSupport::ParameterFilter.new([-> (k, v) do
  v.reverse! if /secret/i.match?(k)
end])
=> reverses the value to all keys matching /secret/i

Публичные Классовые Методы

new(filters = [], mask: FILTERED) Показать исходный код
# File activesupport/lib/active_support/parameter_filter.rb, line 42
def initialize(filters = [], mask: FILTERED)
  @filters = filters
  @mask = mask
end

Создаёт экземпляр с заданными фильтрами. Поддерживаемые типы фильтров — String, Regexp, и Proc. Другие типы фильтров обрабатываются как String с использованием to_s. Для фильтров типа блока ключ, значение и необязательный исходный хэш передаются в качестве аргументов блока.

Параметры

  • :mask — Заменяемый объект при фильтрации. По умолчанию "[FILTERED]".

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

filter(params) Показать исходный код
# File activesupport/lib/active_support/parameter_filter.rb, line 48
def filter(params)
  compiled_filter.call(params)
end

Маскирует значение params если ключ соответствует одному из фильтров.

filter_param(key, value) Показать исходный код
# File activesupport/lib/active_support/parameter_filter.rb, line 53
def filter_param(key, value)
  @filters.empty? ? value : compiled_filter.value_for_key(key, value)
end

Возвращает отфильтрованное значение для заданного ключа. Для фильтров типа блока третий аргумент блока не заполняется.

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

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