我有一个医院和病人模型。医院has_many与患者的关系。我在医院的validates :patients, :presence => true型号中进行了验证检查。在添加了这个验证检查之后,控制器的rspecs失败了,这只是创建了一个医院对象。我试图创建一家工厂,以创造医院和病人,但到目前为止没有运气。这就是我到目前为止尝试过的。
FactoryBot.define do
factory :hospital do
hospital_id { Faker::Crypto.unique.md5 }
name { 'something' }
departments { 'some description' }
after(:create) do |hospital|
create(:patient, patient_id: hospital.id)
end
end
end知道我做错什么了吗?
发布于 2019-06-14 18:03:39
我以前做过这样的事情,已经记不起来了,但你能试试以下几个吗?
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发布于 2019-06-14 16:56:38
factory :hospital do
after :create do |hospital|
create :hospital, patient: patient
end
end下面是一个不错的备忘单:bot
发布于 2019-06-14 17:38:15
正如我在评论中所说的,这种验证可能不会有多大帮助。但我认为他们唯一的方法是在一个save电话中拯救医院和病人。因此,在拯救医院之前,您可能需要将未保存的病人添加到医院协会中。Rails将自动保存未保存的关联。
试试这个:
FactoryBot.define do
factory :hospital do
hospital_id { Faker::Crypto.unique.md5 }
name { 'something' }
departments { 'some description' }
before(:create) do |hospital|
build(:patient, hospital: hospital)
end
end
endhttps://stackoverflow.com/questions/56602293
复制相似问题