如何在Factory Girl中创建has_and_belongs_to_many关联?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (33)

鉴于以下内容

class User < ActiveRecord::Base
  has_and_belongs_to_many :companies
end

class Company < ActiveRecord::Base
  has_and_belongs_to_many :users
end

你如何为公司和用户定义包括双向关联?这是我的尝试

Factory.define :company do |f|
  f.users{ |users| [users.association :company]}
end

Factory.define :user do |f|
  f.companies{ |companies| [companies.association :user]}
end

现在我尝试

Factory :user

更令人惊讶的是,我没有发现如何在任何地方做到这一点,是否有定义必要的模式,或者我正在做一些根本性的错误?

提问于
用户回答回答于

Factorygirl已经更新,现在包括回调来解决这个问题。

用户回答回答于

这是适合我的解决方案。

FactoryGirl.define do

  factory :company do
    #company attributes
  end

  factory :user do
   companies {[FactoryGirl.create(:company)]}
   #user attributes
  end

end

company = FactoryGirl.create(:company, #{company attributes})
user = FactoryGirl.create(:user, :companies => [company])

扫码关注云+社区