我想创建一个:membership
工厂,然后创建一个:comment
工厂,在这个特定的情况下"卷起来"与会员所在的同一集团。它不应该总是指向同一个组,所以我定义我的工厂是这样的:
factory :membership do
user
group
end
factory :decision do
group
end
factory :comment do
decision
end
然后我就像这样创建这两个对象:
membership = create(:membership)
decision = create(:decision, group: membership.group)
comment = create(:comment, decision: decision)
这很有效,但它只是一个很小的例子。我希望能够创建成员资格,然后将成员资格作为参数传递给Comment构造函数,从而不需要第二行。我已经查看了factory_girl文档,但我无法弄清楚如何更改我的工厂定义来执行此操作。有办法吗?
答案 0 :(得分:1)
将会员资格传递到transient attribute的评论工厂。在before(:create)
回调中,从成员资格创建决策并将决策添加到评论:
factory :comment do
transient do
membership
end
before(:create) do |comment, evaluator|
decision = create(:decision, group: evaluator.membership.group)
comment.decision = decision
end
end