gpt4 book ai didi

ruby-on-rails - 在 Factory Girl 中克隆模型?

转载 作者:太空宇宙 更新时间:2023-11-03 18:23:24 27 4
gpt4 key购买 nike

我想使用 Factory Girl 生成大量模型,每个模型只有一两个属性不同。

有没有办法让工厂接受模型的实例?理想情况下,我想

  before(:all) do
data1 = create(:instance,
:attribute_1 => 1,
:attribute_2 => 2,
:attribute_3 => "something",
:attribute_4 => "something else",
:attribute_5 => 5
...
)

data2 = create(:instance,
:attribute 2 => 15,
base: data1
)
end

data2 将被初始化为 data1 的克隆,我可以指定我想要覆盖的新属性。

我试过使用 transient 属性,但看不到实现类似方法的方法:

FactoryGirl.define do
factory :instance do
ignore do
base nil
end
attribute_1 { base.nil? ? argument.attribute_1 : base.attribute_1 + argument.attribute_1 }
attribute_2 { base.nil? ? argument.attribute_2 : base.attribute_2 + argument.attribute_1 }
...
end
end

我是不是以完全错误的方式处理这个问题?

最佳答案

您能否更简单地定义您要使用的属性的哈希值,然后在第二次调用时稍微更改它?

类似于:

data_attributes = {
:attribute_1 => 1,
:attribute_2 => 2,
:attribute_3 => "something",
:attribute_4 => "something else",
:attribute_5 => 5
...
}
data1 = create(:instance, data_attributes)

data2 = create(:instance, data_attributes.merge(:attribute_2 => 1))

我很感激这并不能完全回答您的问题,但它可能会解决您的问题。

关于ruby-on-rails - 在 Factory Girl 中克隆模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14468235/

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