8

Factory Girl のドキュメントでは、(私が推測するに) 親子関係を作成するためのこの構文を提供しています...

  Factory.define :post do |p|
    p.author {|a| a.association(:user) }
  end

投稿はユーザー (「投稿者」) に属します。

User多数の を含む を作成するためのFactory を定義したい場合はどうすればよいでしょうPostか?

または、多対多の状況の場合はどうなるでしょうか (たとえば、以下の更新を参照)。


アップデート

私はそれを理解したと思った。私はこれを試しました...

Factory.define(:user) do |f|
  f.username { Factory.next(:username) }

  # ...

  f.roles { |user|
    [
      Factory(:role),
      Factory(:role, {:name => 'EDIT_STAFF_DATA'})
    ]
  }
end

最初は機能しているように見えましたが、FG が同じユーザー名と電子メールでユーザーを 2 回保存しようとしたため、検証エラーが発生しました。

そこで、元の質問に戻ります。と のような多対多の関係がある場合、関連付けられた を返す Factory をどのように定義できますUsersか? 一意でなければならないことに注意してください.FGを作成するたびにDBに新しい「ADMIN」を作成することはできません.RolesUsersRolesRolesRoleUser

4

3 に答える 3

1

次のような仕様の状況に対処するactive_factory プラグインを作成しました。

models { user - posts(3) }

興味があれば、factory_girl ファクトリーとの統合を作成してみるかもしれません。

于 2011-04-20T20:43:22.573 に答える
1

factory girlの最近の更新により、関連付けをコールバック ブロックで指定できるようになりました

于 2009-12-22T03:01:14.117 に答える