factory_girl 个临时属性的未定义方法

Undefined method for factory_girl transient attributes

我正在开发 rails 3 (rails (3.2.13)) 应用程序,我正在使用 factory_girl_rails (4.5.0)rspec (2.13.0)

我有一个 delivery 看起来像这样的工厂

FactoryGirl.define do

  factory :delivery do

    trait :assigned do
      delivery_type 1
    end

    trait :started do
      delivery_type 2
    end

    factory :delivery_with_jobs do

      ignore do
        jobs_count = 2
        duration = 10
      end

      after(:create) do |delivery, evaluator|
        create_list(:job, evaluator.jobs_count, delivery: delivery, client: delivery.client)
      end
    end
  end
end

我尝试像这样在我的规范中实例化

let!(:delivery_with_jobs) {
        FactoryGirl.create(
            :delivery_with_jobs,
            :started,
            jobs_count: 3,
            user: user,
            current_user: user,
            account: user.account,
            client: client
        )
      }

问题是我在 运行 测试时以及尝试在 rails 控制台中创建工厂时不断收到 NoMethodError: undefined method 'jobs_count' for #<FactoryGirl::SyntaxRunner:0x000000079e5f00>。我先是 factory_girl 的低版本 and have found this post。所以我尝试将关键字更改为 ignore 但没有帮助,所以我尝试升级工厂女孩也没有帮助。

当我从 FactoryGirl.create(:delivery_with_jobs).

中省略 jobs_count 参数时,我也会遇到同样的错误

我是不是做错了什么?您对导致此问题的原因有什么建议吗?

提前致谢。

你的 ignore/transient 块不应该有 =s

ignore do
  jobs_count 2
  duration 10
end