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.other_related_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(params[:id]) 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.
class 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..