私は FactoryGirl ファクトリを作成しますOrder
が、 before(:create) コールバックは関連付けられたファクトリ オブジェクトを作成しません。
親クラス
class Order < ActiveRecord::Base
attr_accessible :tax, :total
has_many :order_lines
validates :user, presence: true
validates :order_lines , presence: true
end
子クラス
class OrderLine < ActiveRecord::Base
attr_accessible :order, :product, :qty
belongs_to :order
belongs_to :product
...
...
validates :order, presence: true
end
工場
Factory :order do
...
ignore do
number_or_order_lines 1
end
before(:create) do |order, evaluator|
FactoryGirl.create_list :order_line, evaluator.number_or_order_lines, order: order
end
end
Factory :order_line do
association :user
association :order
...
end
問題
私の rspec テストで、注文オブジェクトを作成すると:
describe Order do
before {@order = FactoryGirl.create(:order) } => #throws error (see below)
end
エラー ActiveRecord::RecordInvalid 検証に失敗しました 注文明細を空白にすることはできません
アップデート
ただし、次のことは正常に実行できますが、明らかに 1 つしか作成できません。
after(:build) do |order, evaluator|
order.order_lines << FactoryGirl.build(:order_line, order: order)
end
仮説-親が保存されていないため、 がcreate_list
保存しようとしている可能性がある場所を確認できますが、エラーが発生する可能性があります。OrderLine
注文オブジェクトの order_lines コレクションはまだ空であってはなりません。