Tôi có mối quan hệ has_many
tiêu chuẩn (Đặt trước có nhiều Đơn đặt hàng) với xác thực rằng Đặt chỗ không được lưu mà không có ít nhất một Đơn đặt hàng. Tôi đang cố gắng để tái tạo điều này với các nhà máy FactoryGirl của tôi nhưng xác nhận là ngăn cản tôi làm như vậy.FactoryGirl has_many liên kết với xác nhận
class Booking < ActiveRecord::Base
has_many :orders
validates :orders, presence: true
end
class Order < ActiveRecord::Base
belongs_to :booking
end
Dưới đây là thông số kỹ thuật nhà máy FactoyGirl của tôi cho từng mô hình theo sau trang wiki GitHub của FactoryGirl.
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
Khi tôi cố gắng chạy FactoryGirl.create(:booking_with_orders)
từ spec của tôi, tôi nhận được:
Failure/Error: @booking = FactoryGirl.create(:booking_with_orders)
ActiveRecord::RecordInvalid:
Validation failed: Orders can't be blank
Nó có vẻ như việc kiểm tra về việc phê chuẩn đang chạy ngay cả trước khi before(:create) [...]
mà về mặt lý thuyết sẽ tạo ra đơn đặt hàng cho các đặt phòng.
This post khuyên bạn không nên thêm has_many
mối quan hệ với nhà máy của bạn nhưng tôi muốn giải quyết vấn đề này nếu có cách tốt để làm điều đó.
Xin cảm ơn trước.
Ý bạn là 'booking.orders <<' nhưng ngược lại, đây là câu trả lời cho tôi. Cảm ơn! – Jalada
Rất tiếc! cố định nó, cảm ơn cho chỉ nó ra – jassa
tuyệt vời! Cảm ơn rất nhiều! – gayavat