2010-01-14 39 views
8

是否有可能讓named_scope返回記錄對某個列是唯一的?在rails唯一記錄中的named_scope?

e.g

named_scope :unique_styles, :order =>"title desc", :limit => 3 

這將會給我三種樣式,但如果我想確保標題是不同的?在這種情況下,可能會有三個具有相同樣式的記錄,我希望這個named_scope只給出標題的唯一值。

所以["style 1", "style 1", "style 1"]是不可能的,它會強迫自己給["style 1", "some style 2", "maybe another 3"]

  • 我認爲group可以做到這一點,我使用的是現在。如果任何人有任何意見,不管那是好事。

回答

13

你可能想要探索:對發現者和named_scopes組選項:

named_scope :unique_styles, :order => "title desc", :limit => 3, :group => "title" 
+1

這是「:一羣」不「:GROUP_BY」想通了,它工作,謝謝! –

+0

爲我提供了不首先檢查文檔的權利:) – workmad3

2

如果真的所有你想要的是標題,這個現在應該做的是爲MySQL。 (我還沒有研究其他引擎是否支持DISTINCT。)

named_scope :unique_styles, :select => 'DISTINCT title', :order => 'title desc', :limit => 3 
3

對於Rails 3只中偷看你可以做到這一點菊花鏈方式:

scope :unique_styles, order("title DESC") 
         .select("DISTINCT title") 
         .limit(3)