工厂女孩未定义变量

Factory girl undefined variable

我想传递 course 变量并创建 User 以确定用户应该进入哪个课程。

这是我工厂女孩的代码。

factory :user_with_course do
  sequence(:account){|n| "user_#{n}"}

  ignore do
    course nil
  end

  after(:create) do |user|
    create(:character, user_id: user.id, course_id: course.id) if course
    user.save
  end
end

我用

调用它
create_list(:user_with_course, 3, course: course)

为什么我会收到这个错误

undefined local variable or method `course' for #<FactoryGirl::SyntaxRunner:0x007f9348750188>

我认为 ignore 应该可以避免这个问题。

根据 documentation,这应该有效:

  transient do
    course nil
  end

  after(:create) do |user, evaluator|
    create(:character, user_id: user.id, course_id: evaluator.course.id) if evaluator.course
    user.save
  end