2010-01-14 14 views
8

Ist es möglich, named_scope Rückmeldungen für eine bestimmte Spalte eindeutig zu haben?Named_scope in Schienen einzigartige Datensätze?

beispiel

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

Das gibt mir drei Arten, aber was ist, wenn ich der Titel ist anders überprüfen will? In diesem Fall kann es drei Datensätze mit demselben Stil geben. Ich möchte, dass named_scope nur eindeutige Titelwerte angibt.

So ist ["style 1", "style 1", "style 1"] nicht möglich, es wird sich zwingen ["style 1", "some style 2", "maybe another 3"]

  • i zu geben, denken group es tun kann und ich bin mit, dass für jetzt. Wenn jemand irgendwelche Kommentare hat, egal, das wäre großartig.

Antwort

13

Sie wollen wahrscheinlich die Sie entdecken sollten: Gruppenoption für Findern und named_scopes:

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

Es ist ": Gruppe" nicht ": group_by" das herausgefunden und es hat funktioniert, danke! –

+0

Dienen mir richtig für die Überprüfung der Dokumente zuerst :) – workmad3

2

Wenn wirklich alles, was Sie die Titel wollen, ist, dies es für MySQL tun oughta. (Ich habe nicht sah in, ob andere Motoren DISTINCT unterstützen.)

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

Für Rails 3 lugt Sie können es tun Daisy-Chain-Stil:

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