Mam standardową relację has_many
(Rezerwacja ma wiele zamówień) z potwierdzeniem, że Rezerwacja nie zostanie zapisana bez co najmniej jednego Zamówienia. Próbuję powtórzyć to z moimi fabrykami FactoryGirl, ale walidacja uniemożliwia mi to.FactoryGirl has_many association with validation
class Booking < ActiveRecord::Base
has_many :orders
validates :orders, presence: true
end
class Order < ActiveRecord::Base
belongs_to :booking
end
Oto moje specyfikacje fabryczne FactoyGirl dla każdego modelu, zgodnie ze stroną FactoryGirl na wiki 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
Kiedy próbuję uruchomić FactoryGirl.create(:booking_with_orders)
z mojego specyfikacji, otrzymuję:
Failure/Error: @booking = FactoryGirl.create(:booking_with_orders)
ActiveRecord::RecordInvalid:
Validation failed: Orders can't be blank
Wydaje się, że czek na walidacji jest uruchomiony jeszcze przed before(:create) [...]
które teoretycznie stworzyłoby Zamówienia za rezerwację.
This post zaleca, aby nie dodawać has_many
relacji do swoich fabryk, ale chciałbym rozwiązać to tak czy inaczej, jeśli istnieje dobry sposób, aby to zrobić.
Z góry dziękuję.
Masz na myśli 'booking.orders <<', ale poza tym była to odpowiedź dla mnie. Dzięki! – Jalada
Ups! Naprawiono to, dziękuję za wskazanie go – jassa
doskonałe! Wielkie dzięki! – gayavat