在 factory_girl 里我定义了下面的一些数据
factory :user_1, class: User do
email "[email protected]"
password "xxx"
password_confirmation "xxx"
end
另外还有两个user,假设分别为user2和user3
factory :question_1, class: Question do
title "题目"
content "内容"
association :user, factory: :user_1
end
factory :answer_1, class: Answer do
content "答案1"
association :user, factory: :user_2
association :question, factory: :question_1
end
factory :answer_2, class: Answer do
content "答案2"
association :user, factory: :user_3
association :question, factory: :question_1
end
因为要测试答案之间的排序是否正确,所以在测试代码中有如下代码
answer_1 = FactoryGirl.create(:answer_1)
answer_2 = FactoryGirl.create(:answer_2)
然后就报错
ActiveRecord::RecordInvalid: Validation failed: Email has already been taken
因为错误提示是在 answer_2 创建的那行,我认为应该是因为我的两个答案都关联了 question_1,那么在创建 answer_1 的时候关联创建了 question_1 及 user_1,创建 answer_2 的时候又再重复创建 question_1 及 user_1,所以 user_1 被创建了 2 次,key 重复了。
请问在应该如何解决这问题?是否不应该所有 fk 处都用 association 呢?