我正在使用Mongoid,Rails和Fabrications,并完全失去了这种情况。任何想法都非常感激,但我知道这很复杂。我只想制作一个用户并且只有四个已加入的组,但我一直在加载八个。
以下是我的代码的相关部分
@user1 = Fabricate.build(:registered)
@user1.joined_groups << [common_group, cali_group, ca46, Fabricate(:polco_group, {:name => "Gang of 13", :type => :custom})]
当我运行@user1.joined_groups.size
时,我得到4,但当我@user1.joined_groups.map(&:name)
时,我得到8条记录:
#<PolcoGroup _id: 1 ... member_ids: [], follower_ids: []> #<PolcoGroup _id: 1 ... member_ids: [], follower_ids: []> #<PolcoGroup _id: 1 ... member_ids: [], follower_ids: []> #<PolcoGroup _id: 1 ... member_ids: [], follower_ids: []> #<PolcoGroup _id: 1 ... member_ids: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], follower_ids: [1, 1]> #<PolcoGroup _id: 1 ... member_ids: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], follower_ids: [1, 1]> #<PolcoGroup _id: 1 ... member_ids: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], follower_ids: [1, 1]> #<PolcoGroup _id: 1 ... member_ids: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], follower_ids: [1, 1]>
(我将所有BSON :: ObjectId('4eab3ca5f11aac2701000009')语句替换为1并删除了大量中间代码。
这里提供了完整的代码集:https://gist.github.com/1323984
大多数bizzarre只是简单地调用地图可能会导致问题。
puts "just created user with these groups:" puts @user1.joined_groups.map(&:name) puts "then secondly" puts @user1.joined_groups.map(&:name)
生成此(!):
just created user with these groups: Dan Cole CA CA46 Gang of 13 then secondly Dan Cole CA CA46 Gang of 13 Dan Cole CA CA46 Gang of 13
感谢您的任何见解!经过多次尝试,我无法找到终端复制这个的方法,所以我怀疑Fabrication宝石。 (更新:不,我用标准的mongoid对象得到这个错误,所以我完全归咎于mongoid。)
添
答案 0 :(得分:1)
我认为问题可能只是因为您没有正确地将群组推送到用户身上。尝试使用concat
或单独铲除它们。
@user1.joined_groups.concat([common_group,
cali_group,
ca46,
Fabricate(:polco_group, {:name => "Gang of 13", :type => :custom})])