2011-10-29 11 views
0

Mongoid、Rails、Fabricationsを使用していますが、これはどのように起こっているのでしょうか?どのような考えは非常に感謝しますが、私はこれがかなり複雑であることを知っています私はちょうどユーザーを製作し、4つの結合されたグループしか持たないが、私は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]> 

:私は4を得る@user1.joined_groups.size私が実行されますが、私は@user1.joined_groups.map(&:name)を行うとき、私は8つのレコードを取得する場合はここで

は私のコード

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

の関連セクションです私はすべての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

wow - もう一度これにぶつかりました:http://stackoverflow.com/questions/27697076/mongoid-association-creating-unwanted-records – bonhoffer

答えて

1

私はこの問題は、単にあなたが正しくユーザーにグループをプッシュしていないということかもしれないと思います。 concatを使用するか、別々にシャベルしてみてください。

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