Factory Girl:将transient属性的默认值设置为factory

Factory Girl: Set default value of transient attribute to factory

我有一个 FG 工厂,它 returns 一个复杂的散列,我们称它为 zhash,因为它是在工厂的末尾定义的(FG 按字母顺序加载文件)。

该散列在模型上存储为 json 字符串(对或错,就是这样)。我在该模型的工厂上有一个忽略变量(瞬态属性),允许我将该属性设置为我的自定义哈希,但我想将该忽略变量的默认值设置为该哈希工厂的默认值。

例如

FactoryGirl.define do
  factory :model do
    ignore do
      # this does not work, because the factory has not been defined.
      hash FactoryGirl.create(:zhash)
    end
  end
end

FactoryGirl.define do
  factory :zhash do
    ... #return hash
  end
end

我可以将 zhash 文件的名称更改为 0_zhash,但是是否有 FactoryGirl 方法可以将工厂设置为忽略变量的默认值?

FactoryGirl.define do
  factory :model do
    ignore do
      zhash
    end
    numeric_attribute zhash.count
  end
end

将不起作用,但是

FactoryGirl.define do
  factory :model do
    ignore do
      zhash
    end
    numeric_attribute { zhash.count }
  end
end

(另外,"ignore" 在当前的 factorygirl 中已弃用,将由 "transient" 代替)