2012-07-05 98 views
3

我已經看過一些舊語法的例子,但我找不到使用新的3.x語法的例子(一個這樣的舊例子:factory girl multiple has_many through's)。FactoryGirl 3.x has_many通過關聯

模型

class RawPosition < ActiveRecord::Base 
    has_many :position_translations 
    has_many :specific_positions, through: :position_translations 
end 

class SpecificPosition < ActiveRecord::Base 
    has_many :position_translations 
    has_many :raw_positions, through: :position_translations 
end 

class PositionTranslation < ActiveRecord::Base 
    belongs_to :raw_position 
    belongs_to :specific_position 
end 

工廠

factory :raw_poisition_multiple, class: RawPosition do 
    raw_input "WR/QB" 
    sport_type_id 5 

    after_create do |a| 
     #a.specific_positions.create({specific_position: "WR"}) 
     #a.specific_positions.create({specific_position: "QB"}) 
     FactoryGirl.create(:specific_position, raw_position: a) 
     FactoryGirl.create(:qb_specific_position, raw_position: a) 
    end 
    end 

factory :specific_position do 
    specific_position "WR" 
    end 

factory :qb_specific_position do 
    specific_position "QB" 
end 

規格

describe "WR/QB" do 
     before do 
     @player.player_dict['POS'] = "WR/QB" 
     FactoryGirl.create(:raw_poisition_multiple) 

     @player.clean_position(@player_to_team_history) 
     end 
.... 
end 

如果我取消從raw_position_multiple工廠的線條和註釋掉after_createFactoryGirl線,工作的事情精細。我只想使用工廠來創建關聯。

回答

1

在創建關聯之後,我能夠通過重新加載根模型來解決類似的問題。在您的示例中,這意味着要添加:

a.reload 

到您的after_create塊的末尾。

+0

絕對救生員!花了數小時試圖弄清楚爲什麼協會的另一端無法正常工作! – concept47 2013-01-12 03:13:45

相關問題