FactoryGirl未注册(只有一家工厂遇到此事)

我有三种模式:用户,网站和护照。

用户和站点彼此拥有并且属于彼此,而护照是具有几个额外列的连接模型。

我尝试了以下两种方法:

1。

FactoryGirl.define do factory :passports do association :site, factory: :site association :user, factory: :user access_token 'mock_token' end end 

2。

 FactoryGirl.define do factory :passports do access_token 'mock_token' end end 

无论哪种方式,我都用它:

 let(:site) { FactoryGirl.create :site } let(:user) { FactoryGirl.create :user } let(:site_user) { FactoryGirl.create :site_user, site: site, user: user } let(:passport) { FactoryGirl.create :passport, user: user, site: site } 

请不要问为什么有site_user和护照..这需要一段时间来解释。

谢谢!

马克斯

所以,重述一下:

 # Sites has_many :passports has_many_and_belongs_to :users, :through => :passport # User has_many :passports has_many_and_belongs to :sites, :through => :passport # Pasport belongs_to :site belongs_to :user # has a few other things going on as wel 

认为你应该可以做类似的事情

 FactoryGirl.define do factory :user do # details go here end factory :site_with_users do users { |site| [site.association(:user), site.association(:user)] } end end 

然后你应该能够做到

 let( :site_with_users ) { FactoryGirl.create :site_with_users } 

但这些都是猜测,希望它会帮助你。

OMFG这个很蠢……

切换到Factory.define:passport do | f | 语法使它工作…

吹掉一小时半生产力的好方法