如何在Fabrication中对属性进行分组,就像在Factory_Girl中使用trait一样

时间:2016-03-18 15:15:09

标签: ruby ruby-on-rails-4 factory-bot fabrication-gem

您是否可以通过代码向我展示如何使用factory_girl转换此特定Fabrication代码?

factory :user do
  name "Friendly User"
  login { name }

  trait :male do
    name   "John Doe"
    gender "Male"
    login { "#{name} (M)" }
  end

  trait :female do
    name   "Jane Doe"
    gender "Female"
    login { "#{name} (F)" }
  end

  trait :admin do
    admin true
    login { "admin-#{name}" }
  end

  factory :male_admin,   traits: [:male, :admin]   # login will be "admin-John Doe"
  factory :female_admin, traits: [:admin, :female] # login will be "Jane Doe (F)"
end

如果您看到此Trait in Fabrication inheritance是此处的方法之一,但问题是我们无法为其定义Fabricator,因为它们不是models。任何人都可以告诉我如何在Fabrication中对属性进行分组?

1 个答案:

答案 0 :(得分:3)

你在制作中这样表达:

Fabricator :user do
  admin false
  gender 'Female'
  name "Friendly User"
  login do |attrs|
    if attrs[:admin]
      "admin-#{attrs[:name]}"
    else
      "#{attrs[:name]} (#{attrs[:gender][0]})"
    end
  end
end

Fabricator(:female_admin, from: :user) do
  admin true
end

Fabricator(:male_admin, from: :female_admin) do
  gender 'Male'
end