Я делал что-то подобное раньше;не могу вспомнить, но вы можете попробовать следующее?
FactoryBot.define do
factory :hospital do
# ...
after(:build) do |hospital|
hospital.patients << build(:patient, hospital: hospital)
# I think this needs to be assigned directly to the `hospital` object itself so that it shares the same memory space
# when `save` is called on `hospital`, the `.patients` also get `save`d
end
end
end
Если вышеприведенное не работает, вы можете попробовать это вместо этого?
FactoryBot.define do
factory :hospital do
# ...
after(:build) do |hospital|
hospital.patients.build(
attributes_for(:patient, hospital: hospital)
)
end
end
end