データベース内のオブジェクトのシリアル化に関する一般的なガイダンスを探しています。
コンピュータサイエンスでは、データの保存と送信のコンテキストで、シリアル化とは、データ構造またはオブジェクトをビットのシーケンスに変換して、ファイル、メモリバッファに保存したり、ネットワーク接続リンクを介して送信できるようにするプロセスです。同じまたは別のコンピューター環境で後で「復活」する。 ( http://en.wikipedia.org/wiki/Serialization を参照)
したがって、シリアル化されたオブジェクト(ActiveRecordのコンテキスト内)は、オブジェクトのテキスト/文字列表現(YAMLを使用してエンコード)です。シリアル化すると、(ほぼ)任意のRubyオブジェクトを単一のデータベースフィールドに保存できます。
データベースに保存する必要があるやや複雑なオブジェクトがあり、シリアル化された属性の内容に基づいてレコードを取得する必要がない場合は、シリアル化を使用できます。たとえば、webappのユーザーの設定を保存するためにそれらを使用しました。設定は基本的に、単一のdbフィールドに保存したいハッシュでした。
3./4./5。 Marc-AndréLafortuneが提案したように、 ActiveRecord :: Base.serialize を使用します。
class User < ActiveRecord::Base
serialize :preferences
end
u = User.new
u.preferences = {:show_tooltips => true, :use_extended_menu => false, ...}
u.save
# ...
u = User.find(23)
u.preferences # => {:show_tooltips => true, :use_extended_menu => false, ...}
本当に簡単です。 doc で ActiveRecord::Base.serialize
を確認します。
MessagePack をご覧ください
Rails 4 with Postgresqlを使用している場合、Rails 4は、ハッシュを保存してクエリを許可するhstoreフィールドをサポートします。 http:// blog .remarkablelabs.com/2012/12/a-love-affair-with-postgresql-Rails-4-countdown-to-201