Named_scope в уникальных записях рельсов?

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

e.g

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

Это даст мне три стиля, но что, если я хочу убедиться, что название отличается? В этом случае могут быть три записи с одинаковым стилем, я хочу, чтобы named_scope давал только уникальные значения title.

Так что ["style 1", "style 1", "style 1"] невозможно, он заставит себя дать ["style 1", "some style 2", "maybe another 3"]

  • я думаю, что group может это сделать, и я использую это сейчас. Если у кого-то есть какие-либо комментарии независимо, это было бы здорово.

person Daniel Fischer    schedule 14.01.2010    source источник


Ответы (3)


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

named_scope :unique_styles, :order => "title desc", :limit => 3, :group => "title"
person workmad3    schedule 14.01.2010
comment
Это :group не :group_by понял это, и это сработало, спасибо! - person Daniel Fischer; 14.01.2010

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

scope :unique_styles, order("title DESC")
                      .select("DISTINCT title")
                      .limit(3)
person vladiim    schedule 08.02.2012

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

named_scope :unique_styles, :select => 'DISTINCT title', :order => 'title desc', :limit => 3
person Matchu    schedule 14.01.2010