【发布时间】:2016-05-14 19:48:53
【问题描述】:
我是工厂女孩的新手。我想创建一个同时属于 Membership 和 Stake 工厂的 Share 工厂(这样它们都与同一个 Group 实例有关联)。我正在尝试按如下方式编写我的 Share 工厂,而不是使用关联方法来避免会创建 Share 的回调。
factory :share do
transient do
same_group
end
before(:create) do |share, evaluator|
stake = create(:shareless_stake, group: evaluator.same_group)
member = create(:shareless_membership, group: evaluator.same_group)
share.stake = stake
share.membership = member
end
end
然后我想像这样创建共享:
share = create(:share, same_group: create(:group))
我收到一条错误消息,提示“same_group”特征未注册。当我创建一个 trait,或者在 Group 工厂下创建一个工厂时,它抱怨没有用于 Share 的构建实例的“group=”setter 方法。
我很困惑,因为 factory_girl 似乎试图将我的瞬态属性视为 Share 的实际属性,这是我不想要的。我只想让 same_group 成为 Group 实例的变量,我可以将它传递给 before(:create) 块。我究竟做错了什么?
【问题讨论】:
标签: ruby factory-bot