私は標準的なhas_many
関係 (予約には多くの注文があります) を持っており、少なくとも 1 つの注文がないと予約が保存されないという検証が行われています。これを FactoryGirl ファクトリで複製しようとしていますが、検証により複製できません。
class Booking < ActiveRecord::Base
has_many :orders
validates :orders, presence: true
end
class Order < ActiveRecord::Base
belongs_to :booking
end
以下は、FactoryGirl の GitHub wiki ページにある、各モデルの FactoyGirl 工場仕様です。
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
しますが、それを行う良い方法があれば、とにかくこれを解決したいと思います.
前もって感謝します。