代码之家  ›  专栏  ›  技术社区  ›  unsorted

在工厂定义中指定随机关联对象

  •  2
  • unsorted  · 技术社区  · 14 年前

    factory_girl Like 对象哪个 belongs_to User SocialUnit . 我要这家工厂 就像 随机选取现有 一个随机的 喜欢,而不是仅仅产生一个新的。下面的代码段很有用:

    Factory.define :like do |f|
      if User.all.count > 0
        f.user User.all.sort_by{ rand }.first
      else
        f.association :user
      end
    end
    

    它确实选择了一个随机用户,但似乎随机用户只被选择了一次,因为运行这个

    def create_hauls
      5.times do |i|
        Factory(:haul)
      end
    end
    

    用同一个用户创建一堆喜欢的东西。我想这是有道理的。。。工厂被定义一次,然后被多次重用。

    谢谢。

    1 回复  |  直到 14 年前
        1
  •  7
  •   Hardryv    14 年前

    你想使用 lazy attribute

    f.user { (User.all.count > 0 ? User.all.sort_by{ rand }.first : Factory.create(:user)) }