从Association创建的重复记录

我正在使用Mongoid,Rails和Fabrications,并完全失去了这种情况。 任何想法都非常感激,但我知道这很复杂。 我只想制作一个用户并且只有四个已加入的组,但我一直在加载八个。

这是我的代码的相关部分

 @ user1 = Fabricate.build(:已注册)
 @ user1.joined_groups <“Gang of 13”,:type =>:custom})]

当我运行@user1.joined_groups.size我得到4,但当我执行@user1.joined_groups.map(&:name) ,我得到8条记录:

 #
 #
 #
 #
 #
 #
 #
 #

(我用一个替换了所有BSON :: ObjectId(’4eab3ca5f11aac2701000009’)语句并删除了很多中间代码。

完整的代码集可在此处获取: https : //gist.github.com/1323984

大多数bizzarre只是调用map可能会导致问题。

    将“刚刚创建的用户放在这些组中:”
     puts @ user1.joined_groups.map(&:name)
    放“然后”
     puts @ user1.joined_groups.map(&:name)

生成这个(!):

刚刚创建了这些组的用户:
丹科尔
 CA
 CA46
帮派13
其次是
丹科尔
 CA
 CA46
帮派13
丹科尔
 CA
 CA46
帮派13

感谢您的任何见解! 经过反复尝试,我无法找到终端复制这个的方法,所以我怀疑Fabricationgem。 (更新:不,我用标准的mongoid对象得到这个错误,所以我完全归咎于mongoid。)

蒂姆

我认为问题可能只是你没有正确地将组推送到用户身上。 尝试使用concat或单独铲除它们。

 @user1.joined_groups.concat([common_group, cali_group, ca46, Fabricate(:polco_group, {:name => "Gang of 13", :type => :custom})])