首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建具有has_many关系的父工厂和子工厂

创建具有has_many关系的父工厂和子工厂
EN

Stack Overflow用户
提问于 2019-06-14 16:46:09
回答 3查看 276关注 0票数 0

我有一个医院和病人模型。医院has_many与患者的关系。我在医院的validates :patients, :presence => true型号中进行了验证检查。在添加了这个验证检查之后,控制器的rspecs失败了,这只是创建了一个医院对象。我试图创建一家工厂,以创造医院和病人,但到目前为止没有运气。这就是我到目前为止尝试过的。

代码语言:javascript
复制
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

知道我做错什么了吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-14 18:03:39

我以前做过这样的事情,已经记不起来了,但你能试试以下几个吗?

代码语言:javascript
复制
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

如果上面不起作用,你能试试这个吗?

代码语言:javascript
复制
FactoryBot.define do
  factory :hospital do
    # ...

    after(:build) do |hospital|
      hospital.patients.build(
        attributes_for(:patient, hospital: hospital)
      )
    end
  end
end
票数 0
EN

Stack Overflow用户

发布于 2019-06-14 16:56:38

代码语言:javascript
复制
factory :hospital do
  after :create do |hospital|
    create :hospital, patient: patient
  end
end

下面是一个不错的备忘单:bot

票数 0
EN

Stack Overflow用户

发布于 2019-06-14 17:38:15

正如我在评论中所说的,这种验证可能不会有多大帮助。但我认为他们唯一的方法是在一个save电话中拯救医院和病人。因此,在拯救医院之前,您可能需要将未保存的病人添加到医院协会中。Rails将自动保存未保存的关联。

试试这个:

代码语言:javascript
复制
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
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56602293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档