Избегайте ActiveRecord # save ведение журнала больших полей

Мне нужно запретить ActiveRecord # save регистрировать содержимое больших полей.

Есть ли способ настроить это в Rails 2.3.x?

@document.save #=> Will log something like:

Apr 20 13:45:42 ubuntu rails[2619]: Document::HTML Update (7.0ms)   UPDATE `documents` SET `some_meta_data` = 1, `more_meta_data` = 2, `document_content` = '\n\n\n<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional.....................'
Apr 20 13:45:42 ubuntu rails[2619]: SQL (5.8ms)   COMMIT

Я не хочу, чтобы поле document_content регистрировалось, поскольку оно имеет тип mysql 'text'.


person Leo Gallucci    schedule 20.04.2011    source источник


Ответы (1)


Если вы используете rails 3, сделайте что-то вроде этого в config / application.rb:

config.filter_parameters += [:password, :document_content]

Затем перезапустите ваше приложение. С этого момента журнал должен показывать что-то вроде 'document_content' = [ FILTERED ], если мне не изменяет память.

Если вы используете rails 2, вам нужно поместить в контроллер следующее:

filter_parameter_logging :document_content

При необходимости вы можете добавить список полей, разделенных запятыми.

person brettish    schedule 20.04.2011
comment
@elgalu Отредактировал вопрос, чтобы добавить поддержку rails 2. Но я использовал только рельсы 3, поэтому дайте мне знать, работает ли это. - person brettish; 20.04.2011
comment
К сожалению, это только фильтрует регистрацию параметров HTTP, но по-прежнему регистрирует запрос ActiveRecord # save sql. - person Leo Gallucci; 20.04.2011
comment
@elgalu Верно, с логированием SQL все или ничего. Вы можете отключить ведение журнала SQL в режиме разработки, если хотите. В производственном режиме ведение журнала SQL по умолчанию отключено. - person brettish; 20.04.2011
comment
Да, мне это нужно для журнала разработки, так как я не хочу видеть большие значения полей во время разработки, в любом случае спасибо! - person Leo Gallucci; 21.04.2011