如何建立一个属性依赖于另一个属性的工厂?
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
值的值。这该怎么做?试图实例化几十个有效的“事件”。感谢。
答案 0 :(得分:0)
由于工厂区内出现问题,因此不会发生错误。 Event类未正确定义。
你能否展示你的活动模特?
也许它嵌套在一个模块中?然后你可以这样做:
factory :event, :class => 'ModuleName::Event' do
...
end
答案 1 :(得分: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
)