2010-01-14 14 views
8

Czy możliwe jest posiadanie rekordów zwracanych named_scope unikatowych dla określonej kolumny?Named_scope w unikalnych rekordach szyn?

np

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

To da mi trzy style ale co jeśli chcę, aby upewnić się, że tytuł jest inny? W tym przypadku mogą istnieć trzy rekordy o tym samym stylu, chcę, aby named_scope podawał tylko unikalne wartości tytułu.

Więc ["style 1", "style 1", "style 1"] nie jest możliwe, to będzie zmuszać się dać ["style 1", "some style 2", "maybe another 3"]

  • myślę group może to zrobić i używam to teraz. Jeśli ktokolwiek ma jakieś uwagi, niezależnie, czy byłby świetny.

Odpowiedz

13

Pewnie chcesz poznać Opcja: group dla dystansu i named_scopes:

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

To „: grupa” nie „: group_by” zorientowałem się, że to zadziałało, dzięki! –

+0

Służy mi za to, że nie sprawdzam najpierw dokumentów. – workmad3

2

Jeśli naprawdę chcesz to tytuły, Powinnaś to zrobić dla MySQL. (I nie spojrzał, czy inne silniki obsługują różne.)

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

Dla szyn 3 kumpli można to zrobić styl łańcuchowej:

scope :unique_styles, order("title DESC") 
         .select("DISTINCT title") 
         .limit(3) 
Powiązane problemy