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

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

4

2 回答 2

1
Factory.define(:player) do |uu|
  uu.association(:owner), :factory => :user
  uu.association(:updater), { |player| player.owner }
end
于 2012-05-16T19:40:37.310 回答
0

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

Factory.define(:player) do |u|

  after_build do |player|
    user = FactoryGirl.create :user
    player.owner = user
    player.creator = user
  end

end

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

于 2012-05-16T19:54:44.243 回答