Factory Girl - переменное количество связанных объектов для HABTM - PullRequest
1 голос
/ 01 сентября 2011

Если у меня есть 2 модели - например.Магазин и Бренд, и я хочу смоделировать магазин, имеющий, скажем, от 3 до 10 брендов, какой хороший способ сделать это, используя фабричную девушку?

factory :brand do |b|
  b.name "Hip Brand"
  b.url  { "http://#{name}.com" }
end    

factory :shop do |s|
  name        "Cool Shop"
  after_create {
    count = 0
    (5..10).to_a.sample.times do
      count += 1
      Factory(:brand, :shops => s, :name => "brand #{count}")
    end
  }
end

Это явно не тот способ,но должен дать представление о том, чего я хотел бы достичь!

1 Ответ

3 голосов
/ 01 сентября 2011

Я не могу проверить это в данный момент, но это должно работать:

Factory.define :brand, :class => Brand do |b|
  b.name  "Hip Brand"
  b.url   { "http://#{name}.com" }
end    

Factory.define :shop, :class => Shop do |s|
  s.name     "Cool Shop"
  s.brands   { 
    count = 0
    Array(5..10).sample.times.map do
      Factory.create(:brand, :name => "Brand #{count += 1}")
    end
  }
end

Или это:

Factory.define :shop, :class => Shop do |s|
  s.name        "Cool Shop"
  s.brand_ids   { 
    count = 0
    Array(5..10).sample.times.map do
      Factory.create(:brand, :name => "Brand #{count += 1}")[:id]
    end
  }
end
...