Проверка существующей записи на заводской девушке

StackOverflow https://stackoverflow.com/questions/8318183

Вопрос

Вот что я пытаюсь сделать. У меня есть несколько объектов, но ради простоты я оставлю его двумя. Два объекта имеют много отношений. Например:

class Foo < ActiveRecord::Base
    has_many :bars
    set_primary_key :BLAH
end

class Bar < ActiveRecord::Base
    belongs_to :foo
end

Factory.define :foo
   blahblahblah
end

Factory.define :bar do |t|
   t.association :foo
end

Теперь я хочу знать, если я создаю экземпляр панели (который создаст экземпляр FOO), а тестовый заканчивает/сбои/какие записи остаются в базе данных (по дизайну). Теперь, если я снова запустил тот же тест, я бы получил ошибку SQL, говоря, что первичный ключ уже существует в БД. Я хочу знать, как я могу проверить, существует ли экземпляр FOO в БД, и если так пропустить, пытаясь создать его и продолжить с созданием бара? Это достаточно мутно для вас? :)

Это было полезно?

Решение

Я знаю, что это может быть не самое элегантное решение, но это то, что я выработал, и, похоже, он делает то, что мне нужно, для ...

#defined in foo
def existing_foo(foo_id)
  if(Foo.find_by_FOOID(foo_id) == NIL)
    Factory(:foo, :foo_id => foo_id)
    return :foo_id
  end
  Foo.find_by_FOOID(foo_id).FOOID
end

#defined in bar
Factory.define bar do |record|
  record.sequence(:foo_id){|n|existing_foo("blah#{n}")}
end
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top