SuperSerialize
A super, simple way to serialize anything from Fixnums and Floats to Arrays, Hashes, Times and Dates.
Installation
Add this line to your application's Gemfile:
gem 'super_serialize'
And then execute:
$ bundle
Or install it yourself as:
$ gem install super_serialize
Usage
In your model
class SomeModel < ActiveRecord::Base
super_serialize :varied_attr_type, :other_varied_attr_type
...
end
Examples:
> sm = SomeModel.new
> sm.varied_attr_type = 3
> sm.varied_attr_type
=> 3
> sm.varied_attr_type.class
=> Fixnum
> sm.varied_attr_type = "3"
> sm.varied_attr_type
=> 3
> sm.varied_attr_type.class
=> Fixnum
> sm.varied_attr_type = "3.0"
> sm.varied_attr_type
=> 3.0
> sm.varied_attr_type.class
=> Float
> sm.varied_attr_type = "some string"
> sm.varied_attr_type
=> "some string"
> sm.varied_attr_type.class
=> String
> sm.varied_attr_type = [1,2]
> sm.varied_attr_type
=> [1,2]
> sm.varied_attr_type.class
=> Array
> sm.varied_attr_type = "[1,2,3]"
> sm.varied_attr_type
=> [1,2]
> sm.varied_attr_type.class
=> Array
> sm.varied_attr_type = "{key: 'some value'}"
> sm.varied_attr_type
=> {"key" => 'some value'}
> sm.varied_attr_type.class
=> ActiveSupport::HashWithIndifferentAccess
> sm.varied_attr_type = {key: 'some value'}
> sm.varied_attr_type
=> {"key" => 'some value'}
> sm.varied_attr_type.class
=> ActiveSupport::HashWithIndifferentAccess
> sm.varied_attr_type = "2014-12-06 12:00:00 -0500"
> sm.varied_attr_type
=> 2014-12-06 12:00:00 -0500
> sm.varied_attr_type.class
=> Time
> sm.varied_attr_type = Time.parse("2014-12-06 12:00:00 -0500")
> sm.varied_attr_type
=> 2014-12-06 12:00:00 -0500
> sm.varied_attr_type.class
=> Time
> sm.varied_attr_type = "2014-12-06"
> sm.varied_attr_type
=> 2014-12-06 12:00:00 -0500
> sm.varied_attr_type.class
=> Date
> sm.varied_attr_type = Date.parse("2014-12-06")
> sm.varied_attr_type
=> 2014-12-06
> sm.varied_attr_type.class
=> Date
Contributing
- Fork it ( http://github.com/ricardo-quinones/super_serialize/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request
This project rocks and uses MIT-LICENSE.