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.event为 nil,因此引发异常。无论如何配置 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 回答