私は工場の女の子に新しいです。メンバーシップとステークの両方のファクトリに属するShareファクトリを作成したい(両方とも同じGroupインスタンスとの関連付けを行うようにしたい)。私は共有を作成するコールバックを避けるために関連メソッドを使用するのではなく、次のように共有ファクトリを記述しようとしています。before(:create)コールバックで一時的な属性を使用
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」形質が登録されていないというエラーを取得しています。私が特性を作成したり、その名前でグループファクトリの下にファクトリを作成したりすると、ビルドされたShareのインスタンスのための 'group =' setterメソッドがないというエラーが発生します。
factory_girlが一時的な属性を共有の実際の属性として扱おうとしているように見えますが、混乱しています。私は、same_groupを、before(:create)ブロックに渡すことができるGroupインスタンスの変数にしたいだけです。私は間違って何をしていますか?