1

我尝试使用Fabrication gem 在 Rails 项目的开发中填充数据库。

问题是我确实觉得 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_userdst_user来制作评论,以便以某种方式将它们混合在一起,最好让用户给出很多评论而同一用户收到很多评论。

感谢您的帮助。

4

1 回答 1

4

用于定义制造商的制造 gem 文档似乎表明这将适用于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

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

于 2013-09-29T15:16:13.733 回答