Factory Girl общий корень для графа объектов - PullRequest
0 голосов
/ 08 ноября 2011
invitation ------>  event
  \                     \
  \/                    \/
 responder(person) ---->account
      \                  /\
       \                 /
       group-------------

У меня есть приведенный выше график ассоциации. И ниже заводской код:

Factory.define :invitation do |i|
  i.association :event
  i.association :responder, :factory => :person
end


Factory.define :event do |e|
  e.association :account
end


Factory.define :person do |p|
  p.association :account
  p.association :group
end

Factory.define :group do |g|
  g.association :account
end

Если я хочу создать приглашение с помощью «Фабрика: приглашение», то учетная запись будет создаваться более одного раза. И уникальные поля для учета уже заняты со второй попытки. Есть ли для этого умная и приятная квитанция?

1 Ответ

1 голос
/ 08 ноября 2011

Вы можете повторно использовать учетную запись события в обратном вызове after_create (или after_build).

Factory.define :invitation do |i|
  i.association :event
  i.after_create { |i| i.responder = Factory(:person, :account => i.event.account) }
end

Вам придется изменить фабрику групп аналогичным образом.

...