1

私は FactoryGirl で難しい状況にあるので、解決するのを手伝ってくれるかもしれません。コードは次のようになります。

class Bet
  belongs_to :market
  belongs_to :option
  has_one :market, :through => :option
  has_one :event, :through => :market   

  before_validation :set_event_date

  scope :by_event_date, order(arel_table[:event_date].desc) 

  def set_event_date
    self.event_date = event.date
  end
end

Bet で event_date 属性を具体化する必要があるのは、具体化しby_event_dateないとスコープがコスト高すぎるためです。を実行すると問題が発生しますFactoryGirl.create :bet。フックは実行されますが、bet.eventnil であるため、例外が発生します。関連するオブジェクトを実際に作成するように FactoryGirl を構成する方法はありますか?

4

1 に答える 1

1

あなたの工場コードは何ですか?あなたは次のようなことができます

FactoryGirl.define do
  factory :event do
    #something
  end

  factory :bet do
    #something
    event
  end
end

それはあなたのためにイベントを作成するはずです

factorygirl コールバックを使用して少しカスタマイズすることもできます

FactoryGirl.define do
  factory :event do
    #something
  end

  factory :bet do
    #something
    after_build do |bet| #for newer version it is after(:build) do |bet|...
      bet.event = Factory.build(:event)
    end
  end
end

レコードが保存されると、イベントが保存されます

編集:市場を割り当ててみてください

FactoryGirl.define do
  factory :event do
    #something
  end

  factory :market do
    event
  end

  factory :bet do
    #something
    market
  end
end
于 2013-01-23T02:19:55.213 に答える