Sha256: 65a91452d3ee4182cc28e8a7f571ab1f324f4b28739f4d263164482c0f0cb49c

Contents?: true

Size: 1.47 KB

Versions: 1

Compression:

Stored size: 1.47 KB

Contents

= 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(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}[mailto:cmeiklejohn@swipely.com] from {Swipely, Inc.}[http://www.swipely.com].

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cereal_box-0.0.2 README.rdoc