2012-02-21 99 views
1

我在查找如何使用MongoDB/Mongoid在这里查询时遇到了问题。所以我有一个型号Userhas_many :scores,Score是另一种型号,有codevalue。 在user的范围内是独一无二的。对于给定的代码,我想获得用户,按照scorevalue排序。根据字段关联排序集合

基本上,我想要做的是这样的:User.where('scores.code' => code).order_by('scores.value'),除了它不能这样做。我试过几件事情,我认为答案是关系到User.where(:scores.matches => {:code => code}),但这并不能返回我什么,所以我必须缺少的东西在这里..

感谢您的时间,希望我很清楚!

+0

,我改造成实现我想要的,但我仍然对答案感兴趣。 – ksol 2012-02-21 16:35:04

+0

嗨,我有点困惑你的问题。你提到,每个用户的代码都是唯一的。但是你的例子'User.where('scores.code'=> code).order_by('scores.value')'意味着有许多用户共享代码。 – Ren 2012-02-21 21:30:30

+0

对于给定的代码,用户将有0或1个相应的分数。但其他用户也可以(也将会)拥有这个级别的分数。这就是我所说的'在用户范围内独一无二' – ksol 2012-02-21 21:49:21

回答

1

我想这可能是你想要什么:

scores = Score.where('code' => code).order_by('value') 

如果你想获得用户(假设分数类有belongs_to :user),那么你可以这样做:FYI

users_that_matches_code = scores.map { |s| s.user }