データベースの主キーとして UUID を使用したいのですが、列の型として VARBINARY(16) を使用するように勧められました。
これまでのところ、次のものがあります。
module DataMapper
class Property
class UUIDKey < String
key true
default proc { SecureRandom.uuid.delete('-') }
writer :private
def dump(value)
# add '0x' to save as hex number
# according to http://kekoav.com/posts/uuid-primary-key-mysql
'0x' + value unless value.nil?
end
def load(value)
value unless value.nil?
end
def typecast(value)
# how to convert binary value in db?
load(value)
end
end
end
end
もちろん、DataMapper は上記に基づいて値を文字列として保存します。
DataMapper でこれをバイナリ/16 進数として保存し、文字列としてロードするにはどうすればよいですか?