是否可以在工厂(FactoryGirl)中使用if语句?

时间:2013-05-22 17:43:02

标签: ruby-on-rails conditional factory-bot

我的工厂里有两个特征,我希望在创建对象时包含其中一个特征,而不是默认为一个(因此随机选择特征)。这就是我正在做的事情:

FactoryGirl.define do
  factory :follow_up do
    first_name      { Faker::Name.first_name }
    last_name       { Faker::Name.last_name }
    phone           { Faker::PhoneNumber.cell_phone.gsub(/[^\d]/, '').gsub(/^1/, '2')[0..9] }
    email           { Faker::Internet.email }
    email_preferred true
    consent         false

    if [1, 2].sample == 1
      by_referral
    else
      by_provider
    end

    trait :by_referral do
      association :hospital
      association :referral
      source { FollowUp::REFERRAL}
    end

    trait :by_provider do
      association :provider
      source { FollowUp::PROVIDER }
    end
  end
end

然而,似乎忽略了if语句并直接转向by_provider trait。谁知道我怎么做?

1 个答案:

答案 0 :(得分:1)

使用忽略块。

FactoryGirl.define do
  factory :follow_up do
    text "text"
    author "Jim"

    ignore do
      if x == 1
        by_referral
      else 
        ...
      end
    end
  end
end