2011-04-20 28 views
2

我需要防止ActiveRecord#save記錄大型字段的內容。避免ActiveRecord#保存大型字段的日誌記錄

有沒有辦法在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'類型。

回答

2

如果您使用的軌道3,做這樣的事情在配置/ application.rb中:

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

然後重新啓動應用程序。從這一點上,日誌應該顯示如'document_content' = [ FILTERED ],如果內存服務我的權利。

如果使用的是軌道2,你需要把你的控制器內的以下內容:

filter_parameter_logging :document_content 

您可以附加一個逗號,如果需要分隔的字段列表。

+0

@elgalu我編輯了問題以添加rails 2支持。但是,我只使用了導軌3,所以讓我知道它是否有效。 – brettish 2011-04-20 18:36:21

+0

不幸的是,這只是過濾HTTP參數的日誌記錄,但仍然記錄ActiveRecord#save sql查詢。 – 2011-04-20 18:55:21

+0

@elgalu這是正確的,與SQL日誌記錄它是全部或沒有。如果您真的想要,可以在開發模式下關閉SQL日誌記錄。在生產模式下,SQL日誌記錄默認是關閉的。 – brettish 2011-04-20 19:00:13