从数据库中获取唯一列结果的列表

时间:2013-05-12 18:25:46

标签: ruby-on-rails activerecord filtering

我偶然发现了this answer,它帮助我完全按照自己的意愿生成了一个唯一值列表,但是,我并不想要所有结果。有没有办法以select或其他方式过滤结果来实现这一目标?

我在考虑这个问题:

@results = MyModel.select("DISTINCT(columnForDistinction)", :myBoolean => false)

@results = MyModel.select("DISTINCT(columnForDistinction)", :someString => stringImLookingFor)

目前,我无法在查询中过滤结果,因此我在返回的数组上进行迭代,并且只将具有该布尔值的结果列为false,如下所示:

<% @results.each do |result| %>
  <% if !result.myBoolean %>
    #do stuff here
  <% end %>
<% end %>

<% @results.each do |result| %>
  <% if result.someString == stringImLookingFor %>
    #do stuff here
  <% end %>
<% end %>

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

ActiveRecord查询方法是可链接的。您可以调用多个,并在使用结果时将它们全部构建到查询中。对于条件,您将使用where。尝试类似:

@results = MyModel.select("DISTINCT(columnForDistinction)").where(:myBoolean => false)