Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Named_scope in rails unique records?

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"]

  • i think group may do it and I'm using that for now. If anyone has any comments regardless that'd be great.
like image 495
Daniel Fischer Avatar asked Jan 14 '10 00:01

Daniel Fischer


2 Answers

You probably want to explore the :group option for finders and named_scopes:

named_scope :unique_styles, :order => "title desc", :limit => 3, :group => "title"
like image 117
workmad3 Avatar answered Nov 15 '22 16:11

workmad3


For Rails 3 peeps you can do it daisy-chain style:

scope :unique_styles, order("title DESC")
                      .select("DISTINCT title")
                      .limit(3)
like image 3
vladiim Avatar answered Nov 15 '22 15:11

vladiim