Environment: Ruby 1.9.2, Rails 3.1, Machinist 2
I have a Transaction model which belongs to both an Account and Category.
class Transaction < ActiveRecord::Base
belongs_to :account
belongs_to :category
validates_presence_of :account_id, :category_id
end
class Account < ActiveRecord::Base
has_many :transactions
end
class Category < ActiveRecord::Base
has_many :transactions
end
I would like to make Machinist blueprints for Account and Category that creates multiple transactions, like so:
Account.blueprint do
name { "Account #{sn}" }
transactions(3)
end
Category.blueprint do
name { "Category Name #{sn}"}
transactions(3)
end
Transaction.blueprint do
date { Date.current }
amount { "#{rand(100000)}.#{rand(100)}" }
description { "Transaction description #{sn}"}
end
Since a Transaction requires both an Account and Category the above blueprints fail because when Account.make! is called the Transactions created don't have associated Categories and when Category.make! is called the Transactions created don't have associated Accounts. I've tried to manually create the transactions inside the Account and Category blueprints but I end up in infinite loops.
Any advice would be greatly appreciated!
Thanks!
Try this.
Pass an Array of Hashes that could be passed to separate blueprints. Here's an example.
If you don't want to pass any parameters to Transaction, just pass empty Hashes:
You may need to explicitly pass the
:category
and:account
options accordingly if you run into the same issue, but you can contain them to the blueprint.