首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在工厂女孩中创建has_and_belongs_to_many关联

如何在工厂女孩中创建has_and_belongs_to_many关联
EN

Stack Overflow用户
提问于 2009-09-27 20:17:36
回答 8查看 47K关注 0票数 125

考虑到以下情况

代码语言:javascript
复制
class User < ActiveRecord::Base
  has_and_belongs_to_many :companies
end

class Company < ActiveRecord::Base
  has_and_belongs_to_many :users
end

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

代码语言:javascript
复制
Factory.define :company do |f|
  f.users{ |users| [users.association :company]}
end

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

现在我试着

代码语言:javascript
复制
Factory :user

也许并不令人意外的是,这会导致无限循环,因为工厂会递归地使用彼此来定义自己。

更令人惊讶的是,我没有发现任何地方提到如何做到这一点,有没有一个模式来定义必要的工厂,或者我做了一些根本错误的事情?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-01-16 11:19:32

Factorygirl已经更新了,现在包括了解决这个问题的回调。有关更多信息,请查看http://robots.thoughtbot.com/post/254496652/aint-no-calla-back-girl

票数 40
EN

Stack Overflow用户

发布于 2012-04-18 23:07:25

以下是对我有效的解决方案。

代码语言:javascript
复制
FactoryGirl.define do

  factory :company do
    #company attributes
  end

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

end

如果你需要特定的公司,你可以这样使用工厂

代码语言:javascript
复制
company = FactoryGirl.create(:company, #{company attributes})
user = FactoryGirl.create(:user, :companies => [company])

希望这能对某些人有所帮助。

票数 135
EN

Stack Overflow用户

发布于 2011-03-03 19:30:04

我在提供的网站上找不到上述情况的示例。(只有1:N和多态关联,但没有habtm)。我有一个类似的例子,我的代码看起来像这样:

代码语言:javascript
复制
Factory.define :user do |user|
 user.name "Foo Bar"
 user.after_create { |u| Factory(:company, :users => [u]) }
end

Factory.define :company do |c|
 c.name "Acme"
end
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1484374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档