これはルビーORMライブラリDataMapperに関連しています。モデルのIDを正しく保存するために、RubyライブラリDataMapperのin_memoryアダプタを作成するにはどうすればよいですか?
This wikiには、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属性を保存する方法はありますか?