Factory_girl:一个属性的定义依赖于另一个属性

时间:2012-08-23 20:30:20

标签: ruby-on-rails ruby-on-rails-3 factory-bot

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

  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值的值。这该怎么做?试图实例化几十个有效的“事件”。感谢。

2 个答案:

答案 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