Документы Factory Girl предлагают этот синтаксис для создания (я думаю) родительско-дочерних ассоциаций ...
Factory.define :post do |p|
p.author {|a| a.association(:user) }
end
Сообщение принадлежит Пользователю (его «автору»).
Что если вы хотите определить Фабрику для создания User
с, которые имеют набор Post
с?
Или что, если это ситуация «многие ко многим» (см., Например, обновление ниже)?
UPDATE
Я думал, что понял это. Я пробовал это ...
Factory.define(:user) do |f|
f.username { Factory.next(:username) }
# ...
f.roles { |user|
[
Factory(:role),
Factory(:role, {:name => 'EDIT_STAFF_DATA'})
]
}
end
Сначала казалось, что это работает, но потом я получил ошибки валидации, потому что Ф.Г. дважды пытался сохранить пользователя с тем же именем пользователя и адресом электронной почты.
Так что я возвращаюсь к своему первоначальному вопросу. Если у вас есть отношение многие ко многим, например, скажем Users
и Roles
, как вы можете определить Фабрику, которая будет возвращать Users
с некоторыми связанными Roles
? Обратите внимание, что Roles
должно быть уникальным, поэтому я не могу иметь F.G. создавая новый "ADMIN" Role
в БД каждый раз, когда он создает User
.