我有一个User模型,只有在至少有一个地址时才有效:
class User
has_many :addresses
validates :addresses, length: { miniumum: 1}
end
class Address
belongs_to :user
end
我尝试像这样定义我的FactoryBot工厂:
FactoryBot.define do
factory :user do
association :address
name 'test'
end
end
使用create(:user)
创建用户时,由于缺少地址而无法保存用户,这是一个错误。似乎只有在创建用户后才会创建关联(这显然会产生验证错误)。建造工厂的正确方法是什么?
谢谢
试试:
FactoryBot.define do
factory :user do
name 'test'
before(:create) do |user|
user.addresses << build(:address, user: user)
end
end
end
请记得为address
创建一个工厂。
association
属性,只应在模型包含外键(您在其上声明belongs_to
的模型)时使用。从工厂中删除association :address
并在保存用户之前使用before(:create)
回调构建地址:
FactoryBot.define do
factory :user do
name 'test'
before(:create) { |object| object.addresses.build() }
end
end