我們的rails應用程序中有user和user_level。用戶has_many user_levels。我們建立FactoryGirl數據設置如下:如何在FactoryGirl 3.3中爲has_many關聯設置子參數?
factory :user_level do
position "admin"
user
end
factory :user do
login 'testuser'
password "password1"
#user_levels
after(:build) do |user|
user.user_levels << FactoryGirl.build(:user_level, :user => user)
end
end
的問題是如何重置位置user_level,例如,銷售?以下不起作用:
ul = FactoryGirl.attributes_for(:user_level, :position => 'admin')
user = FactoryGirl.create(:user, :login => 'test', :password => 'password',
:user_levels => ul)
錯誤是「未定義的方法」每個'「。用build
代替attributes_for
會產生相同的錯誤。在工廠的user_level中重置位置的正確方法是什麼?謝謝。
它解決了未定義方法'每個'的錯誤。對於attributes_for,AssociationMisMatch存在錯誤。對於構建,沒有代碼錯誤。但是它表示該電子郵件是重複的(但表中沒有用戶記錄,除了正在創建的記錄)。如果刪除:user_levels => [ul],則rspec沒有錯誤。 – user938363
只需導軌安裝,除了在工廠中定義的默認值之外,似乎:user_levels => [ul]爲創建的用戶添加了一個user_level。很奇怪,不是嗎? – user938363