我尝试使用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 制作评论,以便以某种方式将它们混合起来,最好是拥有用户这提供了大量的评论,同一个用户收到了很多评论。
感谢您的帮助。
答案 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
文档非常好;我建议检查一下,然后尝试:)