Ruby on rails FactoryGirl factory特征内的序列不使用主序列计数器

Ruby on rails FactoryGirl factory特征内的序列不使用主序列计数器,ruby-on-rails,ruby,factory-bot,Ruby On Rails,Ruby,Factory Bot,我有以下工厂: FactoryGirl.define do factory :foo do sequence(:name) { |n| "Foo #{n}" } trait :y do sequence(:name) { |n| "Fooy #{n}" } end end end 如果我跑 create :foo create :foo create :foo, :y 我得到Foo 1,Foo 2,Fooy 1。但是我想要Foo1,Foo2,fo

我有以下工厂:

FactoryGirl.define do
  factory :foo do
    sequence(:name) { |n| "Foo #{n}" }

    trait :y do
      sequence(:name) { |n| "Fooy #{n}" }
    end
  end
end
如果我跑

create :foo
create :foo
create :foo, :y

我得到
Foo 1,Foo 2,Fooy 1
。但是我想要
Foo1,Foo2,foo3
。如何实现这一点?

您定义了两个不同的序列生成器,因为它们不在同一范围内

我不会为生成器使用:名称。暗示数字的名称似乎更合适

sequence :seq_number
在工厂中包括瞬态属性,并指定生成的序列编号

transient do
  seq_no { generate(:seq_number) }
end
对“name”属性使用transient属性。这同样适用于“name”的trait版本

name { "Foo #{seq_no}" }

trait :y do
  name { "Fooy #{seq_no}" }
end
干杯,
Eugen

在和的提示下,我得出了以下解决方案:

FactoryGirl.define do
  sequence :base_name do |n|
    " #{n}"
  end

  factory :foo do
    name { "Foo " + generate(:base_name) }

    trait :y do
      name { "Fooy " + generate(:base_name) }
    end
  end
end