工場には2つのfactory_girlファクトリ、contact
とuser
があります。連絡先には、user
の外部キーであるdest_user_id
という属性がありますが、NULLでもかまいません。その属性については、user
ファクトリを使用して新しいユーザーを作成し、そのIDをdest_user_id
に割り当てたいとします。それを行う方法はありますか?工場の定義では、他の工場の属性を使用して属性を割り当てます。
0
A
答えて
0
外部キーがdest_user_id
の場合、モデル名と同じ関係になっていれば、アプローチを変更してはいけません。 contact
belongs_to
user
とuser
has_one
またはhas_many
contacts
どちらかと仮定すると、以下のように、あなたが欲しいものを達成することができます
まずファクトリを作成:
FactoryGirl.define do
factory :user do
Field 1
Field 2
# etc
end
factory :contact do
# Add only the minimum fields required to create a contact, but not the association
Field 1
Field 2
factory :contact_with_user do
# then you add the association for this inherited factory
# we can use 'user' here as the factory is the same as the association name
user
end
end
end
この設定を使用すると、user
なしcontact
を作成し、したがって、はNULL
となります。ユーザーがのテスト/スペック内にいるとします。
@user = FactoryGirl.create(:user)
@contact = FactoryGirl.create(:contact_with_user, :user => @user)
ユーザーの有無にかかわらずcontact
を作成し、あなたのことができますので、このアプローチは、柔軟性を最大化:user
を作成し、contact
次を使用する上でdest_user_id
フィールドにIDを割り当てるには
特定のテストに必要な場合にのみuser.id
を連絡先モデルに渡すことができます。あなたはその後、FactoryGirl.create(:contact_with_user)
を呼び出した場合の両方contact
とuser
が自動的に作成されますが、あなたは二つのモデル間のアソシエーションの名前は何
関連する問題
- 1. Python:工場属性
- 2. FactoryGirlは工場でupdated_at属性を設定しました
- 3. 工場の女の子の従属属性
- 4. Rspec:他の工場で工場を使用する
- 5. 工場の女の子一意性検証は、関連工場
- 6. ネストされた属性とレールを持つ工場ガールエラー5
- 7. Djangoフォームフィールドテンプレートでのカスタム属性の割り当てと使用
- 8. 従属要素の一連の工場
- 9. スマートクライアントソフトウェア工場ビュー活性化
- 10. インスタンス属性を使用してクラス属性を定義する方法は?
- 11. ネストした工場で条件付き属性を作成する方法
- 12. 工場ガールはシンボルの代わりに文字列属性キーを持っていますか?
- 13. Railsの工夫 - 管理者役割、属性
- 14. Python attrs library:他の属性を使用してattr.ib(デフォルト=)を定義します
- 15. C#での工場の単純なデザインで、別の工場から工場に電話していますか?
- 16. 定義された関数をjavascriptのオブジェクト属性に割り当てる
- 17. 角工場依存性の問題
- 18. 工場の特性を拡張することにより、Scalaコンパニオンオブジェクトを工場として使用します。より良い解決策?
- 19. ランタイムデータを使用した依存性注入:工場と直接の依存性
- 20. キュウリとRspec工場工場の女の子工場
- 21. 工場を工場を作るには?
- 22. コールバックの属性割り当てが機能しません。
- 23. 属性値の割り当てが機能しません
- 24. JAXBを使用して属性値を取得できません(親クラスの属性の場合)
- 25. html属性に角度設定を割り当てる方法
- 26. 1つの工場のデータを別の工場で使用する方法
- 27. XPathを使用して特定の属性の属性値を取得する
- 28. ミニセッション工場とrealsession工場
- 29. 工場はアンギュラでは定義されていません
- 30. ngx-datatableを使用する場合のタイトル属性の設定
FactoryGirl.create(:contact_with_user, :user => @user)
を使用するときに持っているdest_user_id
の割り当てを制御できないであろうdest_user_idを記述する明確にするためにモデルの詳細を投稿してください。 – nmott私は、dest_user_idが外部キーであるという事実を追加しました。それはどうでもいい?この質問は 'user'の属性についても同じです。 – FrontierPsycho
潜在的な解決策を少し変更するので、外部キー名と共に関係名を変更していないことを確認したかっただけです。可能なアプローチは以下の通りです。 – nmott