FactoryBot未定义的方法错误

时间:2018-03-15 16:43:41

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

我有一个现有的工厂(订单),我正在尝试建立一个有效继承它的新工厂。它看起来像这样:

factory :order_with_domain, :parent => :order do |o|
  o.order_provider 'DomainNameHere'
end

这样做并运行order_with_domain的规格后,我受到了欢迎:

undefined method `order_provider=' for #<Order:0x00007fc70d9fafc0> 
Did you mean?  order_provider

如果我尝试将order_provider放在父工厂中,我会收到同样的错误。

非常感谢任何帮助。

感谢。

3 个答案:

答案 0 :(得分:0)

假设您的模型具有order_provider属性或order_provider=方法,正如@moveson在上面评论过。

我会使用traits。像这样:

factory :order do
  # ... original factory stuff

  trait :with_domain do
    order_provider 'DomainNameHere'
  end
end

然后使用它:

order_with_domain = FactoryBot.create(:order, :with_domain)

答案 1 :(得分:0)

尝试运行rails c test,然后检查您的专栏(如果有)。如果不是,那么这与您的测试数据库有关,那么您需要使用RAILS_ENV=test rake db:migrate在测试环境中运行迁移,如果没有任何反应,请删除schema.rb,然后再次运行

答案 2 :(得分:0)

尝试将值放在大括号中,如下所示:

factory :order_with_domain, :parent => :order do |o|
  o.order_provider { 'DomainNameHere' }
end

这是on thoughtbot

的原因