Skip to content
Serialization filters for active record.
Ruby
Find file
Pull request Compare This branch is 8 commits behind cmeiklejohn:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
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..

Something went wrong with that request. Please try again.