Reputation: 3062
Is it possible to have named_scope
return records unique for a certain column?
e.g
named_scope :unique_styles, :order =>"title desc", :limit => 3
That will give me three styles but what if I want to make sure the title is different? In this case there may be three records with the same style, I want this named_scope to only give unique values of title.
So ["style 1", "style 1", "style 1"]
isn't possible, it'll force itself to give ["style 1", "some style 2", "maybe another 3"]
group
may do it and I'm using that for now. If anyone has any comments regardless that'd be great.Upvotes: 8
Views: 7117
Reputation: 1960
For Rails 3 peeps you can do it daisy-chain style:
scope :unique_styles, order("title DESC")
.select("DISTINCT title")
.limit(3)
Upvotes: 3
Reputation: 25707
You probably want to explore the :group option for finders and named_scopes:
named_scope :unique_styles, :order => "title desc", :limit => 3, :group => "title"
Upvotes: 13
Reputation: 85812
If really all you want is the titles, this oughta do it for MySQL. (I haven't looked into whether other engines support DISTINCT.)
named_scope :unique_styles, :select => 'DISTINCT title', :order => 'title desc', :limit => 3
Upvotes: 2