Mam dwa modele (ModelA i ModelB) i fabryki FactoryGirl dla każdego. Chcę, aby fabryka dla ModelB mogła (A) tworzyć dane testowe i (B) budować (bez zapisywania do bazy danych) przykładowe dane do wyświetlania klientom. Mam problem z uzyskaniem (A) do pracy z powodu sprawdzania poprawności Rails w moich modelach.Walidacje obejść podczas tworzenia obiektów FactoryGirl
MODELA:
class ModelA < ActiveRecord::Base
belongs_to :model_b
validates_presence_of :model_b
end
Fabryka do 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
Fabryka do ModelB
FactoryGirl.define do
factory :model_b do
some_attr "goodbye"
end
end
nie mogę tworzyć przedmioty z tych fabryk bez uzyskania błędy sprawdzania poprawności:
ruby> FactoryGirl.create :model_a
ActiveRecord::RecordInvalid: Validation failed: ModelB can't be blank
Wydaje się, że FactoryGirl próbuje zapisać obiekt fabryczny przed zapisaniem swoich assocations. Zdaję sobie sprawę, że mógłbym mieć fabrykę dla ModelB, aby utworzyć skojarzony ModelA (zamiast ją budować) - jednak straciłbym elastyczność, mogąc wykorzystać fabrykę ModelA do budowania przykładowych danych lub zapisywania danych testowych. Ewentualnie mogę usunąć zatwierdzenia; ale wtedy nie miałbym walidacji.
Jakieś inne opcje?
Świetna poprawka. Bardzo mi pomogło. –
Niestandardowy serwer proxy nie działa z FYI. default_strategy została usunięta tutaj: https://github.com/thoughtbot/factory_girl/commit/76235313240c17db663fe7f2868d7f0ecdea72d8#diff-2856f806bf47808e13bc8dc0baf374db – Geesu
Lub zobacz: https://github.com/thoughtbot/factory_girl/issues/578 –