我有一个标准的has_many
关系(预订有很多订单),并验证没有至少一个订单就不会保存预订。我试图用我的 FactoryGirl 工厂复制它,但验证阻止我这样做。
class Booking < ActiveRecord::Base
has_many :orders
validates :orders, presence: true
end
class Order < ActiveRecord::Base
belongs_to :booking
end
以下是 FactoryGirl 的 GitHub wiki 页面中每个型号的 FactoyGirl 工厂规格。
FactoryGirl.define do
factory :booking do
factory :booking_with_orders do
ignore do
orders_count 1
end
before(:create) do |booking, evaluator|
FactoryGirl.create_list(:order, evaluator.orders_count, booking: booking)
end
end
end
factory :order do
booking
end
end
当我尝试FactoryGirl.create(:booking_with_orders)
从我的规范运行时,我得到:
Failure/Error: @booking = FactoryGirl.create(:booking_with_orders)
ActiveRecord::RecordInvalid:
Validation failed: Orders can't be blank
似乎验证检查甚至在before(:create) [...]
理论上会为预订创建订单之前运行。
这篇文章建议不要向has_many
你的工厂添加关系,但如果有一个好的方法,我还是想解决这个问题。
提前致谢。