环境: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 and Category做Machinist蓝图,如下所示:
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
选项,但是可以将它们包含在蓝图中。关于ruby-on-rails - 模型属于2个has_many关联时的机械师蓝图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7761239/