0.01
No release in over a year
Sanitization makes it easy to store slightly cleaner strings to your database.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

 Project Readme

Sanitization

Sanitization makes it easy to store slightly cleaner strings to your database.

Specs Gem Version

Features (all optional):

  • White space stripping
  • White space collapsing (multiple consecutive spaces combined into one)
  • Empty string to nil (if database column supports it)
  • Change casing (ie. upcase, downcase, titlecase, etc)

Defaults

By default, Sanitization has all options disabled. It is recommended you use a configuration block to set sensitive defaults for your projects.

For example, I use:

# config/initializers/sanitization.rb

Sanitization.configure do |config|
  config.strip = true
  config.collapse = true
  config.nullify = true
end

# or you can use the following shortcut instead:

Sanitization.simple_defaults!

Configuration Options

  • Strip leading & training white spaces (strip: true|false)
  • Collapse consecutive spaces (collapse: true|false)
  • Store empty strings as null if the database column allows it (nullify: true|false)
  • All String columns are sanitized (only: nil, except: nil)
  • Also sanitize strings of type text (include_text_type: true|false)
  • Change casing: (case: :none|:up|:down|:custom)

Installation

bundle add sanitization

Usage

# Assuming the following configuration block:
Sanitization.configure do |config|
  config.strip = true
  config.collapse = true
  config.nullify = true
end

# Default settings for all strings
class Person < ApplicationModel
  sanitizes
  # is equivalent to:
  sanitizes strip: true, collapse: true, include_text_type: false
end

# Default settings for all strings, except a specific column
class Person < ApplicationModel
  sanitizes except: :alias
end

# Default settings + titlecase for specific columns
class Person < ApplicationModel
  sanitizes only: [:first_name, :last_name], case: :title
end

# Complex example. All these lines could be used in combination.
class Person
  # Apply default settings and `titlecase` to all string columns, except `description`.
  sanitizes case: :title, except: :description

  # Keep previous settings, but specify `upcase` for 2 columns.
  sanitizes only: [:first_name, :last_name], case: :up

  # Keep previous settings, but specify `downcase` for a single column.
  sanitizes only: :email, case: :downcase

  # Apply default settings to column `description`, of type `text`. By default, `text` type is NOT sanitized.
  sanitizes only: :description, include_text_type: true

  # Disable collapsing for `do_not_collapse`.
  sanitizes only: :do_not_collapse, collapse: false

  # Sanitize with a custom casing method named `leetcase` for the `133t` column.
  # Don't nullify empty strings.
  sanitizes only: '1337', case: :leet, nullify: false
end

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

License

The gem is available as open source under the terms of the MIT License.