factory_girl_rails has_many关联仅包含众多关联中的一个

|| 我正在使用factory_girl_rails而不是装置。这是我的模型:
class User < ActiveRecord::Base
  has_many :tasks
end

class Task < ActiveRecord::Base
  belongs_to :user
end
这是我的工厂:
Factory.define :user do |u|
end

Factory.define :task do |t|
  t.association :user, :factory => :user
end
在测试中,我这样做:
user = Factory.create :user
(1..5).each { Factory.create(:task, :user => user)}
我遇到的问题是,之后的
user.tasks
仅包含一项任务。 我尝试过这样定义“ 4”工厂:
Factory.define :user do |u|
  u.tasks {|tasks|  [tasks.association(:user)] }
end
像这样:
Factory.define :user do |u|
  u.tasks {|tasks|  [tasks.association(:user), tasks.association(:user)] }
end
在这两种情况下,ѭ7都会导致无限循环。     
已邀请:
        我认为您正在做的事情是倒退的-您可以从用户创建任务,但反之则不然,就像您尝试做的一样。从概念上讲,关联从用户到任务。 我所做的就是为该类型的用户创建一个特殊的工厂。
Factory.define :user_with_tasks, :parent => :user do |user|
  user.after_create {|u| 5.times { Factory.create(:task, :user => user) } }
end 
另外,如果您只想使用默认工厂,则只需执行此操作
Factory.define :task do |f|
  f.user :user
end 
无需指定工厂 更新:看起来其他人过去做过类似的事情: 在factory_girl中与孩子们建立联系     
        嗯,这行得通:
Factory.define :task do |t|
  t.association :user
  t.after_create {|t| t.user.tasks << t}
end
约翰,您的方法可行,但实际上我无法使用您所描述的内容,因为在测试中,任务还需要引用另一个(未提及的)模型,并且在
user_with_tasks
工厂定义中我看不到引用它的方法。     

要回复问题请先登录注册