2015-03-26 3 views
0

У меня есть модель Plan, которая имеет Creator и Contact. Контакты принадлежат создателям. Каждый Plancontactдолжен принадлежать creator.Factory Girl: Ассоциация повторного использования как атрибут

Как использовать FactoryGirl для обеспечения того, чтобы ассоциация contact поступала из массива creator.contacts?

Другими словами, я хочу сделать что-то вроде этого:

FactoryGirl.define do 
    factory :project do 
    name "MyString" 
    user 
    contact {user.contacts.sample} 
end 

Это, однако, не работает. Есть идеи?

Обратите внимание, что у меня есть валидация на модели Plan, которая гарантирует, что назначенный контакт принадлежит создателю. В настоящее время эта проверка не выполняется.

+0

Как не проходит валидация? Что печатается, если вы обратитесь к {p (user.contacts.sample)} '? – lobanovadik

+0

Это нуль. Мне нужен был запрос перезагрузки пользователя. : / –

ответ

1

У вас есть 2 пути для создания громоздкого объекта с зависимостями:

  1. Использование FactoryGirl callbacks. В вашем случае вы должны определить обратный вызов after(:create) и назначить дополнительные зависимости.
  2. Создайте вспомогательный метод, который создаст ваш объект и назначит дополнительные зависимости. Этот способ похож на первый, но он более гибкий.
1

Мне не хватает reload звоните пользователю, так как пользовательский завод создает контакты после создания обратного вызова.

Смежные вопросы