Factory Girl 文档提供了这种用于创建(我猜)父子关联的语法......
Factory.define :post do |p|
p.author {|a| a.association(:user) }
end
帖子属于用户(其“作者”)。
如果你想定义一个 Factory 来创建User
有一堆Post
s 的 s 怎么办?
或者如果是多对多的情况(例如,请参阅下面的更新)怎么办?
更新
我以为我已经想通了。我试过这个...
Factory.define(:user) do |f|
f.username { Factory.next(:username) }
# ...
f.roles { |user|
[
Factory(:role),
Factory(:role, {:name => 'EDIT_STAFF_DATA'})
]
}
end
起初它似乎有效,但后来我收到验证错误,因为 FG 试图用相同的用户名和电子邮件保存用户两次。
所以我回到我原来的问题。如果你有一个多对多的关系,比如说Users
and Roles
,你如何定义一个将返回Users
一些关联的工厂Roles
?请注意,它Roles
必须是唯一的,因此我不能让 FGRole
在每次创建User
.