在FactoryGirl中为两个属性使用相同的值

时间:2016-07-02 15:45:34

标签: ruby-on-rails ruby factory-bot

我正在设置具有Artistname属性的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

使这个工作的最佳方法是什么?

2 个答案:

答案 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