Reputation: 1047
I have a payment model, invoice model and a join table invoice_payments for allocating payments to invoices. I am creating my payment factory like this:-
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
Now, my invoice should have same customer_id as that of this payment being created. That's why I did invoice = create(:invoice, customer: customer)
hoping that this will create invoice with same customer as this payment's customer. But this gives me error wrong number of arguments (given 3, expected 1..2)
How can I make invoice so that invoice.customer_id be this payment's associated customer_id in the trait itself?
Upvotes: 0
Views: 63
Reputation: 1047
Found my solution :-
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
Upvotes: 0