ActiveCleaner is a set of helpers that helps you in cleaning user-typed content in your ActiveModel depending models (ActiveRecord, Mongoid...)
Extra spaces mean extra storage. And it could ruin your indexes and your sortings.
Tired of doing everywhere:
before_validation :clean_title def clean_title unless title.nil? self.title = title.squish end self.title = nil if title.blank? true end
:string(StringCleaner, the default one) : cleans all the space characters. It turns
" A \n \t title \t "into
:text(TextCleaner) : like
:string, but preserves new lines (with a max of 2 successive new lines). useful when the field is rendered with the
:markdown(MarkdownCleaner) : like
:text, but preserves spaces in the beginning of lines (the indentation). useful for... markdown!
:utf8mb3(Utf8mb3Cleaner) : removes all 4-bytes encoded chars in UTF8 strings that mess with the
utf8encoding in MySQL (iOS6 emojis for example).
Add the gem to your Gemfile:
Or install with RubyGems:
$ gem install activecleaner
include ActiveCleaner in your model and also do:
clean :field_1, :field_2 ... :field_n, options_1: :value, options_2: :value
:string) : the symbol name of the cleaner.
false) : set to
nilwhen the field was or is cleaned to
class Post include Mongoid::Document include ActiveCleaner field :title field :subtitle clean :title, :subtitle, nilify: true field :body clean :body, as: :text, nilify: true end
Contributions and bug reports are welcome.
Clone the repository and run
bundle install to setup the development environment.
Provide a case spec according to your changes/needs, taking example on existing ones (in
To run the specs:
bundle exec rspec
You can also use
guard to run the specs during dev.