【发布时间】:2011-03-18 18:00:48
【问题描述】:
我有一个问题,在实际构建之后 after_build 似乎没有触发。如下例所示,after_build 在通过 Factory.build :tail 调用时不应构建第二个尾部,因为已经有一个尾部。
谁知道如何解决这个问题?或者如何修补 Factory Girl 使其行为符合预期。
忽略猫通常没有多条尾巴等事实。:)
楷模class Cat
include Mongoid::Document
embeds_many :tails
end
class Tail
include Mongoid::Document
embedded_in :cat
end
工厂
Factory.define :cat do |a|
a.after_build do |cat|
Factory.build :tail, :cat => cat if cat.tails.empty?
end
end
Factory.define :tail do |a|
a.association :cat, :factory => :cat
end
问题
>> tail = Factory.build :tail
=> #<Tail _id: 4d839b5930efd431c7000008, >
>> tail.cat.tails.length
=> 2 # this should be 1
>> cat = Factory.build :cat
=> #<Cat _id: 4d839b6c30efd431c700000b, >
>> cat.tails.length
=> 1
【问题讨论】:
标签: ruby-on-rails ruby callback factory factory-bot