【发布时间】:2020-07-20 11:09:12
【问题描述】:
我正在使用 Factory Bot 来指定两个模型之间的关联,vehicles 和 documents。车辆 has_many 文件和文件 belongs_to 车辆。 它们如下:
#spec/factories/vehicles.rb
FactoryBot.define do
factory :vehicle do
user { nil }
vehicle_model
vehicle_color
vehicle_type { FactoryBot.build(:vehicle_type, name:"Terrestre") }
vehicle_year
identifier { 'MyString' }
status { :active }
category
end
end
#spec/factories/documents.rb
FactoryBot.define do
factory :document do
vehicle { nil }
status { 'valid_file' }
name { 'CRLV' }
end
end
在这个项目中,我有一个角色 driver,需要一个活动的车辆文档(这是我想要建立的关联)来骑行。 我在要检查的代码点插入了 byebug。首先我检查了车辆是否被激活,所以我输入了:driver.active_vehicle,我收到了:
#
其次,我检查了关联是否正在发生,所以我输入了:driver.active_vehicle.documents,我收到了以下返回:
#<:associations::collectionproxy>
它是空的。为什么会发生这种情况,我该如何解决?
【问题讨论】:
-
OK ...针对您重写的问题,您的
documents关联是空的,因为您没有在工厂中创建任何关联。您应该在after(:create)回调中实现您的with_document特征来执行此操作。