设置具有相同值的多个列,在工厂女孩中


Factory.define(:player) do |u|
    u.association(:owner), :factory => :user
    u.association(:updater), :factory => user
end
我可以

重写上面的定义,这样,我可以将所有者和更新程序的值初始化为相同,而无需在调用 create 时显式传递它们

Factory.define(:player) do |uu|
  uu.association(:owner), :factory => :user
  uu.association(:updater), { |player| player.owner }
end

在定义关联时,我经常发现使用after_createafter_build钩子之一更容易:

Factory.define(:player) do |u|
  after_build do |player|
    user = FactoryGirl.create :user
    player.owner = user
    player.creator = user
  end
end

我通常还会尝试设置我的工厂,以便无论我正在构建(实例化(还是创建(实例化和保存(,它们都可以工作,但是 ActiveRecord 在构建时对如何设置关联有点挑剔,所以我在这个例子中使用了 create。

最新更新