Mongoid Association创建(不需要的)记录

我不知道Mongoid为何在协会创造新纪录。 我正在密切关注代码,但我从来没有见过这样的东西。 我做了一个测试并减少了代码。 我离开录像机以防它可能是相关的。

  它“不应该为MT创建重复的条目”do state = PolcoGroup.create(type :: state,name:'MT',active:true)s = state.get_senators state.junior_senator = s [:state_junior_senator]#!! ! 这会创建一个新记录state.senior_senator = s [:state_senior_senator]#!!!!! 所以这行预期(Legislator.all.size).to eql(2)#实际上等于4  - 每个关联创建一个新的记录最终结果是:Legislator.all.map(&:sortname)=> [“Tester,乔恩(参议员)[D-MT]“,”沃尔什,约翰(参议员)[D-MT]“,”沃尔什,约翰(参议员)[D-MT]“,”测试员,乔恩(参议员) [D-MT]“] ##模型类PolcoGroup包括Mongoid :: Document包括Mongoid :: Timestamps包括VotingMethods包括DistrictMethods扩展DistrictClassMethods包括StateMethods字段:name,:type => String ... #STATE RELATIONSHIPS ----- ------------------------ has_one:junior_senator,class_name:“Legislator”,inverse_of :: jr_legislator_state has_one:senior_senator,class_name:“Legislator”,inverse_of: :sr_legislator_state ... end class立法者包括Mongoid :: Document包括Mongoid :: Timestamps#以下字段直接来自govtrack字段:govtrack_id,类型:整数字段:bioguideid,类型:字符串... belongs_to:jr_legislator_state,class_name:“ PolcoGroup“,inverse_of :: junior_senator be  longs_to:sr_legislator_state,class_name:“PolcoGroup”,inverse_of :: senior_senator ... end module StateMethods def get_senators ...#just返回以下{state_senior_senator:senators.first,state_junior_senator:senators.last} end end 

你可以在这里看到更多代码: https : //gist.github.com/tbbooher/d892f5c234053990da70

好的 – 永远不要做我做的事。 我将旧版本的mongo作为测试数据库,然后执行上述操作。 当然它无法正常工作。