Это относится к библиотеке Ruby ORM DataMapper .
В этой вики описано, как использовать адаптер in_memory для DataMapper. Правильные адаптеры базы данных сохраняют увеличивающийся уникальный идентификатор на каждом экземпляре модели - 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'.
Я хотел бы сослаться на свои модели через идентификатор, потому что я не могу гарантировать уникальность других атрибутиков. Есть ли способ заставить адаптер in_memory сохранить добавочный уникальный идентификатор id для своих моделей?