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(params[:id])
@thing_json = @thing.as_json
@thing_json[:other_things][:name] = @thing.other_thing.name
@thing_json[:other_related_thing][:name] = @thing..name
respond_with(@thing_json)
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..