ruby-on-railsrubyfiltering

How to filter parameters in rails?


Rails has built in log filtering so you don't log passwords and credit cards. Works great for that but when you want to trigger a custom log (like to email) and send your own params or other data along with it, the parameters are obviously not auto-filtered. I have been digging and trying to find this in the rails source but have had no luck so far.

I have configured rails to filter parameters as follows and it works properly for keeping the data out of rails logs:

config.filter_parameters += [:password, :password_confirmation, :credit_card]

How would you filter sensitive data from the params hash before dumping it into an email, api call or custom (non-rails) log?


Solution

  • You can always use the except method:

    params.except(:password, :password_confirmation, :credit_card)
    

    That will exclude them from the listing. To "filter" them you could try this approach.