Ruby 定义具有链接关联的工厂

Ruby 定义具有链接关联的工厂,ruby,factory-bot,Ruby,Factory Bot,我想创建一个:membership工厂,然后创建一个:comment工厂,在这种特定情况下,该工厂“上卷”到成员身份所在的同一组。它不应该总是指向同一个组,所以我定义我的工厂如下: factory :membership do user group end factory :decision do group end factory :comment do decision end membership = create(:membership) decision = cr

我想创建一个
: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)
然后我创建这两个对象,如下所示:

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)

这是可行的,但这只是一个很小的例子。我希望能够创建成员资格,然后将成员资格作为参数传递给注释构造函数,这样就不需要第二行了。我已经看过了factory_girl文档,我不知道如何更改我的factory定义来实现这一点。有办法吗?

将成员资格以一种方式传递给评论工厂。在(: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