3

古い構文の例をいくつか見ましたが、新しい 3.x 構文を使用した例を見つけることができません (そのような古い例の 1 つ: factory girl multiple has_many through's )。

モデル

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ファクトリの行のコメントを外しFactoryGirl、ブロック内の行をコメント アウトするとafter_create、問題なく動作します。ファクトリを使用して関連付けを作成する機能が欲しいだけです。

4

1 に答える 1

1

関連付けを作成した後にルート モデルをリロードすることで、同様の問題を回避できました。あなたの例では、次を追加することを意味します。

a.reload

あなたのafter_createブロックの最後まで。

于 2012-07-30T15:33:55.217 に答える