【问题标题】:Factory Girl - variable number of associated objects for HABTMFactory Girl - HABTM 关联对象的可变数量
【发布时间】:2011-09-01 09:44:25
【问题描述】:

如果我有 2 个模型 - 例如。商店和品牌,我想为商店建模,比如 3 到 10 个品牌,使用工厂女孩的好方法是什么?

factory :brand do |b|
  b.name "Hip Brand"
  b.url  { "http://#{name}.com" }
end    

factory :shop do |s|
  name        "Cool Shop"
  after_create {
    count = 0
    (5..10).to_a.sample.times do
      count += 1
      Factory(:brand, :shops => s, :name => "brand #{count}")
    end
  }
end

这显然不是这样做的方法,但应该让我知道我想要实现什么!

【问题讨论】:

    标签: ruby unit-testing tdd factory-bot


    【解决方案1】:

    我目前无法对其进行测试,但这应该可以:

    Factory.define :brand, :class => Brand do |b|
      b.name  "Hip Brand"
      b.url   { "http://#{name}.com" }
    end    
    
    Factory.define :shop, :class => Shop do |s|
      s.name     "Cool Shop"
      s.brands   { 
        count = 0
        Array(5..10).sample.times.map do
          Factory.create(:brand, :name => "Brand #{count += 1}")
        end
      }
    end
    

    或者这个:

    Factory.define :shop, :class => Shop do |s|
      s.name        "Cool Shop"
      s.brand_ids   { 
        count = 0
        Array(5..10).sample.times.map do
          Factory.create(:brand, :name => "Brand #{count += 1}")[:id]
        end
      }
    end
    

    【讨论】:

    • 第一个效果很好,谢谢。很高兴看到我并没有偏离轨道太远..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    相关资源
    最近更新 更多