ToHash module for easy data serialization (using JSON, XML, etc.)
Ruby
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
test
.document
.gitignore
LICENSE
README.rdoc
Rakefile
VERSION
to_hash.gemspec

README.rdoc

to_hash

Easy and powerful object to hash serialization tool. It may be used together with to_json/to_xml/to_yaml methods.

Usage

Take a look at the example below:

class Category < ActiveRecord::Base
  def name
    #...
  end
end

class Comment < ActiveRecord::Base
  def author_name
    #...
  end
end

class Post < ActiveRecord::Base
  has_one :category
  has_many :comments

  include ToHash

  def title
    #...
  end

  def body
    #...
  end
end

# simple serialization
Post.first.to_hash(:title, :body)
#=> { :title => "Post Title", :body => "Post body" }

# serialization with key changing
Post.first.to_hash(:title => :title, :content => :body)
#=> { :title => "Post Title", :content => "Post body" }

# simple serialization of nested objects
Post.first.to_hash(:title, [:category, :name])
#=> { :title => "Post Title", :category => { :name => "Category Name" } }

# serialization of nested objects with key changing
Post.first.to_hash(:title, [:category, { :categoryName => :name }])
#=> { :title => "Post Title", :category => { :categoryName => "Category Name" } }

# serialization of nested arrays
Post.first.to_hash(:title, [:comments, { :author => :author_name }])
#=> { :title => "Post Title", :comments => [{ :author => "John Doe" }, { :author => "Jim Smith" }] }

# creating JSON
Post.first.to_hash(:t => :title, :b => :body).to_json
#=> "{\"t\": \"Post Title\", \"b\": \"Post body\"}"
  • ToHash module doesn't require the class to inherit from ActiveRecord::Base - it can be used with any other classes as well.

License

Copyright © 2009 Jakub Kuźma, released under the MIT license