FactoryGirl:访问特征内的关联数据

FactoryGirl: Accessing association data inside traits

我有一个付款模型、发票模型和一个用于将付款分配给发票的连接 table invoice_payments。 我正在这样创建我的支付工厂:-

FactoryGirl.define do
  factory :payment do
    customer
    user
    date Date.today
    amount 300
    discount 50
    mode "Cash"

    trait :with_invoice_payments do
      invoice = create(:invoice, customer: customer)
      invoice_payments_attributes do 
        attributes = []
        attributes << attributes_for(:invoice_payment, invoice_id: invoice.id)
      end
    end
  end
end

现在,我的发票应该与正在创建的此付款的发票相同 customer_id。这就是为什么我 invoice = create(:invoice, customer: customer) 希望这会为与此付款的客户相同的客户创建发票。但这给了我错误 wrong number of arguments (given 3, expected 1..2) 我怎样才能开具发票,以便 invoice.customer_id 与此付款相关联 customer_id 在特征本身中?

找到我的解决方案:-

FactoryGirl.define do
  factory :payment do
    customer
    user
    date Date.today
    amount 300
    discount 50
    mode "Cash"

    trait :with_invoice_payments do
      invoice_payments_attributes do 
        attributes = []
        attributes << attributes_for(:invoice_payment, invoice_id: create(:invoice, 
       customer: customer).id)
      end
    end
  end
end