如何构建一个工厂,其中一个属性依赖于另一个属性?
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
的值的值。怎么办?尝试示例化几十个有效的“事件”。- 谢谢-谢谢
3条答案
按热度按时间oknwwptz1#
这里描述了https://thoughtbot.github.io/factory_bot/dependent-attributes/summary.html
语法是正确的,但错误是因为gem找不到Event模型。与从属属性无关,正如你后来发现的。
6vl6ewon2#
错误不会因为工厂块内部出现错误而发生。Event类定义不正确。
你能展示一下你的Event模型吗?
也许它嵌套在一个模块中?然后你可以这样做:
字符串
k0pti3hp3#
我想你想做的是这样的:
字符串
:dynamic_event
工厂将继承事件工厂的所有属性,但覆盖其块中给定的属性。(本例中序列中的title
)