2013-10-11 32 views
1

到現在爲止,我使用uniq_by來計算唯一的項目用戶。但此方法已被棄用,建議使用uniq代替。但uniq_by返回2(正確!)和uniq返回3(不正確)。該projectuser表充滿這樣的:uniq返回的結果不是uniq_by

id,user_id 
1,1 
2,1 
3,2 

而且這裏的語句:

Projectuser.uniq_by {|p| p.user_id}.count --> 2 
Projectuser.uniq {|p| p.user_id}.count --> 3 

我需要做什麼改變嗎?

+1

首先,你不應該使用任何的那些方法,就像那些爲數組定義的那樣,然而問題似乎很奇怪。你使用的是什麼ruby版本? – BroiSatse

+0

紅寶石版本是2.0.0 – John

回答

0

結果是可行的,因爲uniq來自Array。要匹配SQL成語中的唯一性,您需要使用distinct。

從從documentation的例子:

person.pets.select(:name).distinct 
# => [#<Pet name: "Fancy-Fancy">] 

嘗試:

Projectuser.select(:id, :user_id).distinct 
0

我把它用解決:

Projectuser.uniq.pluck(:user_id)