Factory_girls и родословная - PullRequest
2 голосов
/ 07 июля 2011

У меня есть модель Категория.

class Category < ActiveRecord::Base
  has_ancestry :cache_depth => true, :depth_cache_column => :depth
end

Категория имеет имя поля. Я хочу построить фабрику для категории с уровнем глубины 2. Когда эта фабрика будет вызвана, она должна построить категорию уровня 2 и иметь родительскую категорию с уровнем 1. Как это сделать? Я пробую разные трюки, все не работают. Я останавливаюсь на чем-то подобном

Factory.define :category do |f|
  f.name                        { Faker::Lorem.word }
  f.parent                      { Factory.create(:category) }
end

Спасибо!

1 Ответ

3 голосов
/ 07 июля 2011

Может быть, вы можете создать другую фабрику, у которой нет родителя. И если вы хотите, чтобы вы были категорией 2 уровня, вы делаете:

Factory(:category_level2)

Заводское определение может быть примерно таким:

Factory.define :category do |f|
  f.name   { Faker::Lorem.word }
end

Factory.define :category_level2, :parent => :category do |f|
  f.parent { Factory.create(:category) }
end

Приветствия

...