Named_scope в рельсах уникальные записи? - PullRequest
8 голосов
/ 14 января 2010

Возможно ли иметь named_scope возвращаемых записей, уникальных для определенного столбца?

* 1004 например *

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 может сделать это, и я использую это сейчас. Если у кого-то есть комментарии, независимо от того, что было бы замечательно.

Ответы [ 3 ]

13 голосов
/ 14 января 2010

Возможно, вы захотите изучить опцию: group для поиска и named_scopes:

named_scope :unique_styles, :order => "title desc", :limit => 3, :group => "title"
3 голосов
/ 08 февраля 2012

Для Rails 3 вы можете сделать это в стиле гирлянды:

scope :unique_styles, order("title DESC")
                      .select("DISTINCT title")
                      .limit(3)
2 голосов
/ 14 января 2010

Если на самом деле все, что вам нужно, это заголовки, то это нужно сделать для MySQL. (Я не изучал, поддерживают ли другие движки DISTINCT.)

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