Rails FactoryGirl协会与独特的验证冲突

时间:2015-11-14 11:57:12

标签: ruby-on-rails factory-bot

我有presentation属于participant,而user又属于 factory :presentation do sequence(:title) { |n| "Some topic nr #{n}" } association :participant end factory :participant do name "John Doe" association :user, :guest end factory :user do trait :admin do ident 1000 roles ["admin"] end trait :guest do ident 9000 roles ["guest"] end end

我的FactoryGirl类定义是:

spec

当我运行FactoryGirl.create_list(:presentation, 3)ident时,我收到用户已被误认为的错误,因为participant值必须是唯一的。

问题是,我不想为每个演示文稿创建新对象。它应该属于同一个user对象(因此属于同一个Image对象)。

所以我想要的是:创建属于相同参与者的3个演示文稿。

2 个答案:

答案 0 :(得分:2)

您可以在构建之后使用

来代替关联
  factory :presentation do
    sequence(:title) { |n| "Some topic nr #{n}" }

    after(:build) do |s|
        unless Participant.count == 0
          s.participant = Participant.first
        end
        s.participant ||= create(:participant)
    end
  end

答案 1 :(得分:0)

您可以先创建participant

@participant = FactoryGirl.create(:participant)

然后,在创建演示文稿时分配participant

@presentations = FactoryGirl.create_list(:presentation, 3, participant: @participant)