класс 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(["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 k =~ /secret/i
end])
=> reverses the value to all keys matching /secret/i Публичные методы класса
# File activesupport/lib/active_support/parameter_filter.rb, line 38 def initialize(filters = [], mask: FILTERED) @filters = filters @mask = mask end
Создаёт экземпляр с заданными фильтрами. Поддерживаемые типы фильтров — String, Regexp, и Proc. Другие типы фильтров обрабатываются как String с использованием to_s. Для фильтров-блоков ключ, значение и необязательный исходный хэш передаются в аргументы блока.
Параметры
-
:mask— заменяемый объект при фильтрации. По умолчанию — +“[FILTERED]”+
Публичные методы экземпляра
# File activesupport/lib/active_support/parameter_filter.rb, line 44 def filter(params) compiled_filter.call(params) end
Маскирует значение params если ключ соответствует одному из фильтров.
# File activesupport/lib/active_support/parameter_filter.rb, line 49 def filter_param(key, value) @filters.empty? ? value : compiled_filter.value_for_key(key, value) end
Возвращает отфильтрованное значение для данного ключа. Для фильтров-блоков третий аргумент блока не заполняется.
© 2004–2019 David Heinemeier Hansson
Licensed under the MIT License.