我甚至不知道如何正确地问这个,所以请原谅我,如果我的问题令人困惑。我有一个名为Colors的表 -
我想迭代表中所有颜色的列表,但是按'color-family'排序,所以结果看起来像这样:
Colors:
Reds -
Maroon
Stop Sign
Yellows -
Canary
Blues -
Sky Blue
Royal Blue
Greens -
Neon Green
但我不知道sql语法来收集和排序那种信息 令人惊讶的是,这段代码不起作用;)
<% @group = Colors.presort_by("color-family") %>
<% @color = Colors.all %>
<% @group.each do |group| %>
<%= group.color-family %>s - <br>
<% if @color.name.has_a_column_that_is_also_the_@group.color-family %>
<%= @color.name %>
<% end %>
<% end %>
洛尔。如你所见,我不知道从哪里开始。任何帮助将不胜感激。我没有任何sql查询经验。
再次感谢!
答案 0 :(得分:1)
我不确定是否有办法只使用ActiveRecord查询方法。但它可以很容易地使用Ruby的Enumerable#group_by在内存中完成,并且性能会很好,除非它是一个大型数据集(在这种情况下你可能想要缓存结果,或者查看更复杂的SQL)查询)
@colors = Color.all
grouped = @colors.group_by { |color| color.color_family }
# or .group_by &:color_family
这将返回一个哈希,其中键是颜色族(字符串),值是颜色记录的数组。