FactoryBot 未定义方法错误

Iai*_*inK 3 ruby ruby-on-rails factory-bot

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

factory :order_with_domain, :parent => :order do |o|
  o.order_provider 'DomainNameHere'
end
Run Code Online (Sandbox Code Playgroud)

这样做并使用 运行规范后order_with_domain,我收到了这样的欢迎:

undefined method `order_provider=' for #<Order:0x00007fc70d9fafc0> 
Did you mean?  order_provider
Run Code Online (Sandbox Code Playgroud)

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

非常感谢任何帮助。

谢谢。

小智 5

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


Mid*_*ire 0

假设您的模型有一个order_provider属性或order_provider=方法,如 @moveson 上面评论的那样。

我会用traits. 像这样的东西:

factory :order do
  # ... original factory stuff

  trait :with_domain do
    order_provider 'DomainNameHere'
  end
end
Run Code Online (Sandbox Code Playgroud)

然后使用它:

order_with_domain = FactoryBot.create(:order, :with_domain)
Run Code Online (Sandbox Code Playgroud)