环境: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!被创建的事务没有关联的帐户。我曾尝试手动创建帐户和类别蓝图内的交易,但我最终陷入无限循环。
任何建议将不胜感激!
谢谢!
试试这个
传递一个哈希数组,可以传递给单独的蓝图。下面是一个例子。
Account.blueprint do
name { "Accouunt#{sn}" }
transactions { [{:amount => 10}, {:amount => 20}] }
end
如果你不想传递任何参数给Transaction,只传递空哈希:
Account.blueprint do
name { "Accouunt#{sn}" }
transactions { [{}] * 3 } # 3 transactions
end
如果您遇到同样的问题,您可能需要相应地显式地传递:category
和:account
选项,但是您可以将它们包含到蓝图中。