Чертеж машиниста, когда модель принадлежит 2 ассоциациям has_many
Среда: Ruby 1.9.2, Rails 3.1, Machinist 2
У меня есть модель транзакции, которая принадлежит как учетной записи, так и категории.
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
Я хотел бы сделать чертежи машиниста для учетной записи и категории, которые создают несколько транзакций, например:
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
Поскольку для транзакции требуются учетная запись и категория, вышеуказанные чертежи не выполняются, потому что когда Account.make! называется Транзакции, которые не имеют связанных категорий и когда Category.make! называется Сделки, созданные не имеют связанных учетных записей. Я пытался вручную создавать транзакции внутри чертежей "Учетная запись" и "Категория", но в итоге получаю бесконечные циклы.
Любой совет будет принята с благодарностью!
Спасибо!
1 ответ
Попробуй это.
Передайте Массив Хэшей, который можно передать отдельным чертежам. Вот пример.
Account.blueprint do
name { "Accouunt#{sn}" }
transactions { [{:amount => 10}, {:amount => 20}] }
end
Если вы не хотите передавать какие-либо параметры в транзакцию, просто передайте пустые хэши:
Account.blueprint do
name { "Accouunt#{sn}" }
transactions { [{}] * 3 } # 3 transactions
end
Вам может понадобиться явно передать :category
а также :account
варианты соответственно, если вы столкнетесь с той же проблемой, но вы можете включить их в план.