Named_scope中的rails唯一记录?

时间:2010-01-14 00:25:25

标签: ruby-on-rails activerecord named-scope

是否可以为某列提供唯一的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可能会这样做,而我现在正在使用它。如果有人有任何意见,无论那是伟大的。

3 个答案:

答案 0 :(得分:13)

您可能想要探索finder和named_scopes的:group选项:

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

答案 1 :(得分:3)

对于Rails 3窥视,您可以采用菊花链式:

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

答案 2 :(得分:2)

如果您真正想要的只是标题,那么这就是为MySQL做的。 (我没有考虑其他引擎是否支持DISTINCT。)

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