Transformable
Lets you manipulate data as it's being set on an object without a lot of setter method boilerplate
Installation
Add this line to your application's Gemfile:
gem 'transformable'
And then execute:
$ bundle
Or install it yourself as:
$ gem install transformable
Usage
Use the clean
method on your objects to create a setter method that manipulates inputs:
class User < ActiveRecord::Base
include Transformable
clean(:email) {|e| e.downcase}
end
> u = User.new(email: "foo@BAR.com")
> u.email
=> "foo@bar.com"
By default, nil values won't be passed through to the block. Use the skip_nil option if you want them:
class User < ActiveRecord::Base
include Transformable
clean(:email, :skip_nil => false) {|e| e || "example@foobar.com"}
end
> u = User.new(email: "email@email.com")
> u.email = nil
> u.email
=> "example@foobar.com"
I use regexes for removing forbidden characters:
class User < ActiveRecord::Base
include Transformable
clean(:email) {|e| e.gsub(/\s/, "")} # remove spaces
end
> u = User.new(email: "f o o @ b a r . c o m")
> u.email
=> "foo@bar.com"
Transformable works on pure ruby objects as well as ActiveRecord objects!
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Added some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request