2015-05-10 6 views
0

У меня есть завод под названием Message, который HABTM Users. Я хочу высмеять sender_id внутри фабрики Message. Если я:Использование атрибутов модели внутри другой фабрики модели - рельсы

sender_id { FactoryGirl.build(:user}.id } 

я получаю:

FactoryGirl:DuplicateDefinitionError 

Как я могу обратиться к атрибуту данных другого завода (id в моем случае)?

ответ

1

Даже если он работает, то вы делаете build пользователя (что означает отсутствие сохранения в базе данных) и попытайтесь получить id несохраненной записи, что должно быть неправильным способом.

Что вы можете сделать, это буквально создать объект sender и связать его с пользователем с помощью метода association. В соответствии с указаниями на FactoryGirl вы можете написать:

factory :message do 
    association :sender, factory: :user 
end 

FactoryGirl имеет очень широкий набор возможностей для ассоциаций. Таким образом, вы можете создать ассоциацию belongs_to, но также можно создать has_many с помощью обратных вызовов after_create.

См. associations part in Getting Started. Это очень богатый источник знаний о фабриках.

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