Serialization filters for active record.
Ruby
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 8 commits behind cmeiklejohn:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
spec
.gitignore
.rspec
.rvmrc
.travis.yml
Gemfile
Gemfile.lock
Guardfile
LICENSE
README.rdoc
Rakefile
cereal_box.gemspec

README.rdoc

Cereal box.

Serialization filters for active record.

Motivation

Ever have a controller that looks like this?

class ThingController < ActionController::Base
  respond_to :json

  def show
    @thing = Thing.find(1)
    @thing = @thing.as_json 
    @thing[:other_things][:name] = thing.other_thing.name
    @thing[:other_related_thing][:name] = thing.other_related_thing.name

    respond_with(@thing)
  end
end

Specifically adding additional related information from other models into the serialized hash of an object? Well, no more!

Doesn't this look better?

class ThingController < ActionController::Base
  respond_to :json

  def show
    @thing = Thing.find(1)

    respond_with(OtherRelatedThingFilter.new(ThingFilter.new(@thing))
  end
end

Filters

Implement a filter

It's simple! Just define a module that includes cereal_box and implements an attributes method.

module OtherThingFilter
  include CerealBox

  def attributes(base)
    { :name => base.other_thing.name }
  end
end

Filters support as_xml, as_json and serializable_hash.

License

Cereal Box is Copyright © 2011 Christopher Meiklejohn. It is free software, and may be redistributed under the terms specified in the LICENSE file.

About

The cereal_box gem was written by Christopher Meiklejohn from Swipely, Inc..