【问题标题】:Fabrication Gem difficult association制造宝石难联想
【发布时间】:2013-09-29 08:07:27
【问题描述】:

我尝试使用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

不要考虑不同的场景。

我确实知道如何实现从 orderuser

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

Fabricator(:user) do
  ...
end

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

Fabricator(:order) do   
  ...
end

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

而最困难的魔法是如何用 src_userdst_user 制造 Review 以便以某种方式将它们混合起来,最好有用户给出很多评论,而同一用户收到很多评论。

感谢您的帮助。

【问题讨论】:

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


    【解决方案1】:

    用于定义制造商的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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-09
      • 1970-01-01
      • 2015-02-10
      • 1970-01-01
      相关资源
      最近更新 更多