У меня есть две модели (ModelA и ModelB) и фабрики FactoryGirl для каждой. Я хочу, чтобы фабрика ModelB могла (A) создавать тестовые данные и (B) создавать (без сохранения в базе данных) образцы данных для отображения клиентам. У меня проблемы с получением (A) работы из-за проверок Rails в моих моделях.
Modela:
class ModelA < ActiveRecord::Base
belongs_to :model_b
validates_presence_of :model_b
end
Фабрика для ModelA:
FactoryGirl.define do
factory :model_a do
some_attr "hello"
model_b { FactoryGirl.build :model_b }
end
end
ModelB
class ModelB < ActiveRecord::Base
has_one :model_a
end
Фабрика для ModelB
FactoryGirl.define do
factory :model_b do
some_attr "goodbye"
end
end
Я не могу создавать объекты на этих фабриках без ошибок проверки:
ruby> FactoryGirl.create :model_a
ActiveRecord::RecordInvalid: Validation failed: ModelB can't be blank
Похоже, что FactoryGirl пытается сохранить фабричный объект перед сохранением его ассоциаций. Я понимаю, что мог бы заставить фабрику для ModelB создать связанную с ней ModelA (а не построить ее) - однако тогда я потерял бы гибкость возможности использовать фабрику ModelA либо для построения выборочных данных, либо для сохранения тестовых данных. С другой стороны, я мог бы удалить проверки; но тогда у меня не было бы проверок.
Есть ли другие варианты?