我有一个标准的has_many
关系(预订有很多订单),并验证预订在没有至少一个订单的情况下无法保存。我试图用我的FactoryGirl工厂复制这个,但验证正在阻止我这样做。FactoryGirl has_many与验证关联
class Booking < ActiveRecord::Base
has_many :orders
validates :orders, presence: true
end
class Order < ActiveRecord::Base
belongs_to :booking
end
这里是我的FactoyGirl出厂规格为每个模型从FactoryGirl的GitHub的wiki页面紧随其后。
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) [...]
其理论上将创建预订的订单之前运行验证。
This post建议不要将has_many
关系添加到您的工厂,但是我想解决这个问题,无论如何,如果有一个好的方法来做到这一点。
在此先感谢。
您的意思是'booking.orders <<',否则,这是我的答案。谢谢! – Jalada
哎呀!修好了,谢谢指出 – jassa
优秀!非常感谢! – gayavat