工厂女孩协会有多个特质

时间:2014-09-10 14:38:14

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

我有这样一个协会:

association :address, :factory => [:address, :closer_address]

我的工厂是这样的:

factory :address do
  address1 "12 Any Street"
  latitude 22.4583397
  longitude -11.06776
  state 'pending_verification'

  trait :closer_address do
    latitude 33.4783397
    longitude -11.06776
  end

  trait :verified do
    state 'verified'
  end
end

那么我可以以某种方式创建一个具有多个特征的关联吗?或者还有另一种方法吗?我的想法是,我希望closer_address也经过验证,在另一种情况下,我可能希望closer_address未经验证,这就是为什么要将它们分开。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您可以这样做有两个不同的特征选项:

  factory :address do
    address1 "12 Any Street"
    latitude 22.4583397
    longitude -11.06776
    state 'pending_verification'

    trait :closer_address do
      latitude 33.4783397
      longitude -11.06776
    end

    trait :verified_closer_address do
      latitude 33.4783397
      longitude -11.06776
      state 'verified'
    end
  end

您可以像这样创建对象:

. . .  :factory => [:address, :closer_address]

或者这个:

. . . :factory => [:address, :verified_closer_address] 

您可以在不更改当前工厂的情况下执行此操作:

  factory :address do
    address1 "12 Any Street"
    latitude 22.4583397
    longitude -11.06776
    state 'pending_verification'

    trait :closer_address do
      latitude 33.4783397
      longitude -11.06776
    end

    trait :verified do
      state 'verified'
    end
  end

您可以像这样创建对象:

. . .  :factory => [:address, :closer_address, :verified]

使用FactoryGirl创建对象时,可以同时使用多个特征。