How to create has_and_belongs_to_many associations in Factory girl

associations, factory-bot, has-and-belongs-to-many, ruby-on-rails

Solution

Factorygirl has since been updated and now includes callbacks to solve this problem. Take a look at http://robots.thoughtbot.com/post/254496652/aint-no-calla-back-girl for more info.

Problem

Given the following ``` class User < ActiveRecord::Base has_and_belongs_to_many :companies end class Company < ActiveRecord::Base has_and_belongs_to_many :users end ``` how do you define factories for companies and users including the bidirectional association? Here's my attempt ``` Factory.define :company do |f| f.users{ |users| [users.association :company]} end Factory.define :user do |f| f.companies{ |companies| [companies.association :user]} end ``` now I try ``` Factory :user ``` Perhaps unsurprisingly this results in an infinite loop as the factories recursively use each other to define themselves. More surprisingly I haven't found a mention of how to do this anywhere, is there a pattern for defining the necessary factories or I am doing something fundamentally wrong?

Original source

Related problems