Named_scope in rails unique records?

匿名 (未验证) 提交于 2019-12-03 08:41:19

问题:

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.

回答1:

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

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


回答2:

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

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


回答3:

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 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!