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

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

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

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的值的值。怎么办?尝试示例化几十个有效的“事件”。- 谢谢-谢谢

oknwwptz

oknwwptz1#

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

6vl6ewon

6vl6ewon2#

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

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

字符串

k0pti3hp

k0pti3hp3#

我想你想做的是这样的:

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

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

end

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

相关问题