Проверка существующей записи на заводской девушке
-
25-10-2019 - |
Вопрос
Вот что я пытаюсь сделать. У меня есть несколько объектов, но ради простоты я оставлю его двумя. Два объекта имеют много отношений. Например:
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