我偶然发现了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 %>
有更好的方法吗?
答案 0 :(得分:1)
ActiveRecord查询方法是可链接的。您可以调用多个,并在使用结果时将它们全部构建到查询中。对于条件,您将使用where
。尝试类似:
@results = MyModel.select("DISTINCT(columnForDistinction)").where(:myBoolean => false)