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"A title".:text(TextCleaner) : like:string, but preserves new lines (with a max of 2 successive new lines). useful when the field is rendered with thesimple_formatRails helper.: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 theutf8encoding in MySQL (iOS6 emojis for example).
Add the gem to your Gemfile:
gem 'activecleaner'
Or install with RubyGems:
$ gem install activecleaner
Add include ActiveCleaner in your model and also do:
clean :field_1, :field_2 ... :field_n, options_1: :value, options_2: :value:as(default is:string) : the symbol name of the cleaner.:nilify(default isfalse) : set tonilwhen 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
endContributions 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 spec/cases).
To run the specs:
bundle exec rspec
You can also use guard to run the specs during dev.
- Maxime Garcia emaxime.com @maximegarcia