スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Mongoidでバイナリを保存してみる

MongoDBにバイナリデータを保存してみたかったので、Mongoidを使って実装してみました。
Mongoidのドキュメントにはバイナリの保存について書いてなかったけど、BSON::Binaryのインスタンスをつっこめば保存されるというGoogle groupのスレッドがあったのでそれを参考にしました。
#coding: utf-8
require 'mongoid'

class Test
include Mongoid::Document
field :name
field :value

before_save :to_value
after_initialize :from_value

protected
def to_value
self.value = BSON::Binary.new(value.force_encoding("binary"), BSON::Binary::SUBTYPE_BYTES)
end

def from_value
self.value = value.to_s.force_encoding("UTF-8")
end
end

Mongoid.configure do |conf|
conf.master = Mongo::Connection.new('localhost', 27017).db('test')
end

Test.delete_all
src = "予定表~①ハンカクだ"
test = Test.new(name: src, value: src)
test.save()
p Test.first


表示結果はこれ。
#<Test _id: 4f35b6574c785904d3000001, _type: nil, name: "予定表~①ハンカクだ", value: "予定表~①ハンカクだ">

DBの内容はこれ。
{ "_id" : ObjectId("4f35b6574c785904d3000001"), "name" : "予定表~①ハンカクだ", "value" : BinData(2,"HgAAAOS6iOWumuihqOOAnOKRoO++iu++ne+9tu+9uOOBoA==") }
スポンサーサイト

COMMENTS

COMMENT FORM

TRACKBACK


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。