ruby-on-rails 工厂女孩:一个属性的定义依赖于另一个属性

ezykj2lf  于 2023-08-08  发布在  Ruby
关注(0)|答案(3)|浏览(128)

如何构建一个工厂,其中一个属性依赖于另一个属性?

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

字符串
使用这个函数给出了NameError: uninitialized constant Event我的规格,我假设它是从试图将end_at设置为依赖于start_at的值的值。怎么办?尝试示例化几十个有效的“事件”。- 谢谢-谢谢

oknwwptz

oknwwptz1#

这里描述了https://thoughtbot.github.io/factory_bot/dependent-attributes/summary.html
语法是正确的,但错误是因为gem找不到Event模型。与从属属性无关,正如你后来发现的。

6vl6ewon

6vl6ewon2#

错误不会因为工厂块内部出现错误而发生。Event类定义不正确。
你能展示一下你的Event模型吗?
也许它嵌套在一个模块中?然后你可以这样做:

  1. factory :event, :class => 'ModuleName::Event' do
  2. ...
  3. end

字符串

k0pti3hp

k0pti3hp3#

我想你想做的是这样的:

  1. factory :event do
  2. title 'foo'
  3. description "bar"
  4. other_attributes "baz"
  5. factory :dynamic_event do
  6. sequence(:title) { |n| "Event #{n}" }
  7. end
  8. end

字符串
:dynamic_event工厂将继承事件工厂的所有属性,但覆盖其块中给定的属性。(本例中序列中的title

相关问题