制造宝石难以结合

时间:2013-09-29 08:07:27

标签: ruby-on-rails gem fabrication-gem

我尝试使用Fabrication gem来在rails项目中填充开发中的db。

问题是我觉得Fabrication是非常强大的工具,但除了简单的关联之外我不能做任何事情。

例如,我有以下模型

class User < ActiveRecord::Base
  has_many :order, :dependent => :destroy
  has_many :src_reviews, :class_name => 'Review', :foreign_key => '...'
  has_many :dst_reviews, :class_name => 'Review', :foreign_key => '...'

class Review < ActiveRecord::Base
  belongs_to :src_user, :class_name => 'User', :foreign_key => '...' 
  belongs_to :dst_user,  :class_name => 'User', :foreign_key => '...'
end

class Order < ActiveRecord::Base
  belongs_to :user

不要考虑不同的风格。

我知道如何实现从订单用户

的简单关联
Fabricator(:order) do   
  ...
  user { Fabricate(:user) }
end

Fabricator(:user) do
  ...
end

:但我不知道我是否可以在对面做。

Fabricator(:order) do   
  ...
end

Fabricator(:user) do
  orders {#somehow create 5 orders for each user}
end

最困难的魔法是如何使用 src_user dst_user 制作评论,以便以某种方式将它们混合起来,最好是拥有用户这提供了大量的评论,同一个用户收到了很多评论。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

用于定义制作者的Fabrication gem documentation似乎表明这将适用于belongs_to / has_many关系中的两个方向,您可以通过count: n来获取n个对象:

Fabricator(:person) do
  open_source_projects(count: 5)
  children(count: 3) { |attrs, i| Fabricate(:person, name: "Kid #{i}") }
end

文档非常好;我建议检查一下,然后尝试:)