У меня стандартная связь has_many
(у Резервирования много заказов) с подтверждением того, что Бронирование не сохраняется без хотя бы одного ордера. Я пытаюсь воспроизвести это с завода FactoryGirl, но проверка не позволяет мне это сделать.
class Booking < ActiveRecord::Base
has_many :orders
validates :orders, presence: true
end
class Order < ActiveRecord::Base
belongs_to :booking
end
Вот мои спецификации FactoyGirl factory для каждой модели, как следует из вики-страницы FactoryGirl GitHub.
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
к вашим заводам, но я хотел бы решить это в любом случае, если есть хороший способ сделать это.
Спасибо заранее.