2011-10-13 64 views
0

環境:紅寶石1.9.2,Rails的3.1,機械師2機械師藍圖時模型屬於2個has_many關聯

我有同時屬於一個帳戶和類別事務模型。

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 

由於交易同時需要一個帳戶和類別上述藍圖失敗,因爲當賬戶。使!被稱爲事務創建沒有關聯的類別和Category.make!稱爲創建的交易沒有關聯帳戶。我試圖手動創建賬戶和分類藍圖內的交易,但我最終陷入了無限循環。

任何意見將不勝感激!

謝謝!

回答

2

試試這個。

傳遞一個可以傳遞給單獨藍圖的哈希數組。這是一個例子。

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選項問題,但你可以將它們包含在藍圖中。

相關問題