activerecord-msgpack_serializer というのをつくった
ActiveRecord に serialize という機能があります。
特定フィールドにオブジェクトをシリアライズして保存する機能で、デフォルトでは YAML が使われますが、 load
と dump
のクラスメソッドを持つクラスを指定することで、任意のフォーマットでシリアライズすることができます。
activerecord-msgpack_serializer は MessagePack を使った ActiveRecord のシリアライズを行なう機能を提供するもので、以下の様に使います。
require "activerecord/message_pack_serializer" class Post < ActiveRecord::Base serialize :meta_data, ActiveRecord::Serializers::MessagePackSerializer # ... end
上記の例だと、 meta_data
というフィールドについて、Array や Hash などのデータを出し入れすることができ、内部的には MessagePack で保存されるようになります。
実装 *1は結構シンプルなのですが、そこそこ使いでがあると思います。