我有一个仅在至少有一个地址时有效的用户模型:
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)
创建用户时,由于错误的地址而导致无法保存用户的错误。似乎仅在创建用户之后创建关联(显然会创建验证错误)。建立我的工厂的正确方法是什么?
谢谢
答案 0 :(得分:0)
尝试:
FactoryBot.define do
factory :user do
name 'test'
before(:create) do |user|
user.addresses << build(:address, user: user)
end
end
end
请记住也为address
创建一个工厂。
答案 1 :(得分:0)
association
属性,仅在模型包含外键(在其上声明了belongs_to
的模型)时才应使用。从您的工厂中删除association :address
并使用before(:create)
回调在保存用户之前建立地址:
FactoryBot.define do
factory :user do
name 'test'
before(:create) { |object| object.addresses.build() }
end
end