gpt4 book ai didi

ruby-on-rails - FactoryGirl + Ancestry 两层深

转载 作者:数据小太阳 更新时间:2023-10-29 08:32:22 26 4
gpt4 key购买 nike

基本上:

  • 我有一个Structure 模型,它有很多Subject
  • 每个主题都有一个父主题,它可以是 2 层深。
  • Structure 必须有一个 Subject at_depth 0 和一个 Subject at_depth 2。

问题:

  • 我不知道如何构建我的主题工厂以及如何在结构工厂中建立关联。

我正在使用 Rails 4、factory_girl_rails 4.2.1 和 Ruby 2.0.0

这是我为主题工厂所做的尝试:

factory :subject_grand_parent do |f|
name Forgery(:name).company_name

factory :subject_parent do |s|
f.parent { Factory.create(:subject_grand_parent) }

factory :subject do |s|
f.parent { Factory.create(:subject_parent) }
end
end
end

但是我不能定义parent两次。

Structure 工厂中,我不确定如何为我的关联定义多个主题。这里我现在拥有的:

factory :structure do
subjects {|structure| [structure.association(:subject)] }
...
end

提前致谢

最佳答案

好的,这似乎可行:

主题 工厂:

工厂:主题做 名称伪造(:名称).company_name

factory :subject_children do
name Forgery(:name).company_name + ' child'

after :build do |subject|
subject_grand_parent = Subject.create(name: Forgery(:name).company_name)
subject_parent = subject_grand_parent.children.create(name: Forgery(:name).company_name)
subject.parent = subject_parent
subject.ancestry_depth = 2
end
end

结束

结构工厂:

after(:build) do |structure|
structure.subjects << FactoryGirl.build(:subject)
structure.subjects << FactoryGirl.build(:subject_children)
end

关于ruby-on-rails - FactoryGirl + Ancestry 两层深,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19361100/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com