これは、rubyORMライブラリDataMapperに関するものです。
このウィキでは、DataMapper用のin_memoryアダプターの使用方法について説明しています。適切なデータベースアダプタは、各モデルインスタンスに増分する一意のIDを保存します-次のスニペットに示すように、in_memoryはそれを行わないようです。
require 'rubygems'
require 'dm-core'
DataMapper.setup(:in_memory, :adapter => 'in_memory')
class Foo
include DataMapper::Resource
def self.default_repository_name;:in_memory;end
def self.auto_migrate_down!(rep);end
def self.auto_migrate_up!(rep);end
def self.auto_upgrade!(rep);end
property :id, Serial
property :name, Text
end
f = Foo.new
f.name = "foo"
f.save
puts f.inspect
検査の結果は次のとおりです。
#<Foo id=nil name="foo">
たとえば、別のアダプターを使用して接続した場合、sqliteデータベースIDは「1」に設定されます。
他の属性の一意性を保証できないため、idを介してモデルを参照したいと思います。in_memoryアダプターにモデルの増分する一意のID属性を保存させる方法はありますか?