这与 ruby ORM 库DataMapper 相关。
这个 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 属性?