我有一个标准has_many
关系(预订有很多订单)与验证一个预订没有得到挽救,没有至少一个数量级。 我想用我的FactoryGirl工厂复制这一点,但验证阻止我这样做。
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) [...]
这将理论上创建预订的订单。
这篇文章建议不要加入has_many
关系到你的工厂,但我想反正解决这个问题,如果有做它的好方法。
提前致谢。