require 'factory_bot' FactoryBot.define do factory :order do starts { Time.now } supplier { create(:supplier, article_count: (article_count.nil? ? true : article_count)) } article_ids { supplier.articles.map(&:id) unless supplier.nil? } created_by { create(:user) } updated_by { create(:user) } transient do article_count { true } end # for an order from stock; need to add articles factory :stock_order do supplier_id { 0 } # article_ids needs to be supplied end # In the order's after_save callback order articles are created, so # until the order is saved, these articles do not yet exist. after :create do |order| order.reload end end end