2011-05-14 74 views
4

我使用工廠女孩rspec的許多聯想,這裏是我有:工廠女孩 - 有

factories.rb

Factory.define :user do |f| 
    f.sequence(:fname) { |n| "fname#{n}" } 
    f.sequence(:lname) { |n| "lname#{n}" } 
    f.sequence(:email) { |n| "email#{n}@google.com" } 
    f.password    "password" 
    f.password_confirmation { |u| u.password } 
    f.invitation_code  "xxxxxxx" 
end 

Factory.define :group do |f| 
    f.sequence(:name) { |n| "myGroup#{n}" } 
    f.sequence(:private_email) { |n| "myGroup#{n}" } 
end 

Factory.define :permission do |f| 
    f.role_id   1 
end 

groups_controller_spec.rb

describe GroupsController do 
    include Devise::TestHelpers 

    before (:each) do 
    @user1 = Factory.create(:user) 
    @user1.confirm! 
    sign_in @user1 
    @group = Factory.create(:group) 
    @group2 = Factory.create(:group) 
    @group3 = Factory.create(:group) 
    @permission_user_1 = Factory.create(:permission, :user => @user1, :creator_id => @user1.id, :group => @group) 
    @permission_user_2 = Factory.create(:permission, :user => @user1, :creator_id => @user1.id, :group => @group2) 
    @permission_user_3 = Factory.create(:permission, :user => @user1, :creator_id => @user1.id, :group => @group3) 
    end 

....... 

問題是組模型有一個user_id字段,該字段未由工廠設置。我如何創建一個用戶,然後讓工廠代表該用戶創建一個組。像@ user1.group.factory.create(:group)?

任何想法?謝謝

回答

15

不要爲所有用戶執行此操作,而應創建另一個從用戶工廠繼承的工廠。

Factory.define :user_with_group, :parent => :user do |u| 
    u.groups { |g| [ g.association(:group), 
        g.association(:group) 
        ]} 
end 

你可以在https://github.com/drhenner/ror_ecommerce/tree/master/spec/factories看到很多例子工廠

+0

的鏈接特別感謝 – 2012-08-08 19:02:30