例如,我使用FactoryGirl
let!(:product_1) { FactoryGirl.create(:product) }
let!(:product_2) { FactoryGirl.create(:product) }
let!(:product_uom_1) { FactoryGirl.create(:product_uom, :store_order_unit, product: product_1) }
let!(:product_uom_2) { FactoryGirl.create(:product_uom, :store_order_unit, product: product_2) }
let!(:purchase_order_detail_1) {
FactoryGirl.create(:purchase_order_detail, :default_return_quantity,
product: product_1,
purchase_order: purchase_order,
order_quantity: 100)
}
上面的代码将运行失败,因为当时创建purchase_order_detail
,product_uom_1
和product_uom_2
尚未创建。 (这会使我后来的一些代码失败)。但如果我打电话给那些对象"手动":
let!(:purchase_order_detail_1) {
product_uom_1
product_uom_2
FactoryGirl.create(:purchase_order_detail, :default_return_quantity,
product: product_1,
purchase_order: purchase_order,
order_quantity: 100)
}
这里的不同之处在于我只是将其打印出来。然后在创建product_uom_1
之前创建product_uom_2
和purchase_order_detail
。我不知道为什么,因为我使用了let!
。请向我解释如何修复,不要使用这个"技巧"因为它让我的规格变得丑陋。