Tôi có hai mô hình (ModelA và ModelB) và FactoryGirl cho mỗi nhà máy. Tôi muốn nhà máy cho ModelB có thể (A) tạo dữ liệu thử nghiệm, và để (B) xây dựng (mà không lưu vào cơ sở dữ liệu) dữ liệu mẫu để hiển thị cho khách hàng. Tôi gặp sự cố khi (A) hoạt động do xác thực Rails trong các mô hình của tôi.Xác nhận Rails Bypass khi tạo đối tượng FactoryGirl
ModelA:
class ModelA < ActiveRecord::Base
belongs_to :model_b
validates_presence_of :model_b
end
Factory cho ModelA:
FactoryGirl.define do
factory :model_a do
some_attr "hello"
model_b { FactoryGirl.build :model_b }
end
end
ModelB
class ModelB < ActiveRecord::Base
has_one :model_a
end
Factory cho ModelB
FactoryGirl.define do
factory :model_b do
some_attr "goodbye"
end
end
Tôi không thể tạo các đối tượng từ các nhà máy mà không nhận lỗi xác nhận:
ruby> FactoryGirl.create :model_a
ActiveRecord::RecordInvalid: Validation failed: ModelB can't be blank
Dường như FactoryGirl đang cố gắng để lưu các đối tượng nhà máy trước khi lưu assocations của nó. Tôi nhận ra rằng tôi có thể có nhà máy cho ModelB tạo ra ModelA liên quan của nó (thay vì xây dựng nó) - tuy nhiên, tôi sẽ mất tính linh hoạt khi có thể sử dụng nhà máy ModelA để xây dựng dữ liệu mẫu hoặc lưu dữ liệu thử nghiệm. Cách khác, tôi có thể loại bỏ các xác nhận; nhưng sau đó tôi sẽ không có hiệu lực.
Bất kỳ tùy chọn nào khác?
Khắc phục tuyệt vời. Giúp tôi rất nhiều. –
Proxy tùy chỉnh không còn hoạt động FYI nữa. default_strategy đã bị xóa ở đây: https://github.com/thoughtbot/factory_girl/commit/76235313240c17db663fe7f2868d7f0ecdea72d8#diff-2856f806bf47808e13bc8dc0baf374db – Geesu
Hoặc xem: https://github.com/thoughtbot/factory_girl/issues/578 –