MongoMapper::Plugins::Sanitize

Tiny plugin for MongoMapper to sanitize strings before validation.

Requires

  • MongoMapper

  • Sanitize

Usage

Either load it into all models, or individual models:

# add to all models
MongoMapper::Document.append_inclusions(MongoMapper::Plugins::Sanitize)

# add to a specific model
plugin MongoMapper::Plugins::Sanitize

Once it’s loaded into a model, configure with ‘sanitize’

sanitize :list, :of, :keys

This will use the default Sanitize config, if you want to override then set the :config option:

# Use the built-in Sanitize::Config::RESTRICTED configuration
sanitize :title, :config => Sanitize::Config::RESTRICTED

# Use a custom configuration
sanitize :description, :config => {:elements => ['a', 'span']}

The original text is stored as original_#key, for example:

class Item
  key :description, String

  sanitize :description
end

item = Item.create(:description => "some <b>text</b>")
item.description => "some text"
item.original_description => "some <b>text</b>"

IMPORTANT - calling sanitize sets up original_#key as a copy of the existing key if it exists If the key doesn’t yet exist, it will assume it’s a String field, so if you use something different then make sure to define it first.

You can disable this behaviour by setting :keep_original to false

sanitize :description, :keep_original => false

See the Sanitize Docs (github.com/rgrove/sanitize) for more details on the different configuration options.

Note on Patches/Pull Requests

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself in another branch so I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.

Install

$ gem install mm-sanitize

See LICENSE for details.