我正在设置具有Artist
和name
属性的birth_name
模型。在某些情况下,艺术家的舞台名称与其真实姓名同义,反之亦然。我在工厂要做的是使用birth_name
(使用Faker创建)作为name
属性。我试着简单地引用:
FactoryGirl.define do
factory :artist do
name { birth_name }
birth_name { Faker::Name.name }
end
end
但得到此错误:
ArgumentError: Factory not registered: birth_name
使这个工作的最佳方法是什么?
答案 0 :(得分:6)
愚蠢的建议,但你试过这个吗?
FactoryGirl.define do
factory :artist do
birth_name { Faker::Name.name }
name { birth_name }
end
end
抱歉,我目前没有准备好测试它的环境。
答案 1 :(得分:-2)
您可以使用Transient Attributes。文档说明了这一点:
静态和动态属性可以创建为瞬态属性。瞬态属性将在
attributes_for
中被忽略,并且不会在模型上设置,即使该属性存在或您尝试覆盖它...
FactoryGirl.define do
factory :artist do
transient do
birth_name { Faker::Name.name }
end
name { birth_name }
end
end