0

如何建立一个属性依赖于另一个属性的工厂?

  factory :event do
    sequence(:title) { |n| "Event #{n}" }
    sequence(:description) { |n| "More detailed info about event #{n}" }
    start_at { rand(1..100).days.from_now }
    end_at { start_at + rand(1..5).hours }   # <=== referencing start_at
  end

使用它给出了NameError: uninitialized constant Event我的规格,我假设它是因为试图设置end_at一个取决于start_at. 这个怎么做?试图实例化几十个有效的“事件”。谢谢。

4

2 回答 2

0

我认为你想要做的是这样的:

factory :event do
  title 'foo'
  description "bar"
  other_attributes "baz"

  factory :dynamic_event do
    sequence(:title) { |n| "Event #{n}" }
  end

end

:dynamic_event工厂将从事件工厂继承所有属性,但会覆盖在其块中给出的那些。(本title例中的顺序)

于 2012-08-23T21:13:59.040 回答
0

由于您的工厂块内部出现问题,因此不会发生错误。事件类未正确定义。

你能展示你的事件模型吗?

也许它嵌套在一个模块中?然后你可以这样做:

factory :event, :class => 'ModuleName::Event' do
  ...
end
于 2012-08-23T20:54:38.767 回答