1
是否有ActiveRecord执行自定义SQL查询并让它返回一个数组的数组,其中第一行是列名称,每个后面的行是行数据?我要执行类似:如何获得ActiveRecord查询结果中的行和列?
connection.select_rows_with_headers "SELECT id, concat(first_name, ' ', last_name) as name, email FROM users"
并使其返回:
[["id","name","email"],["1","Bob Johnson","[email protected]"],["2","Joe Smith","[email protected]"]]
这将允许我打印自定义查询结果以HTML表是这样的:
<table>
<% result.each_with_index do |r,i| %>
<tr>
<% r.each do |c| %>
<% if i == 0 %>
<th><%=h c %></th>
<% else %>
<td><%=h c %></td>
<% end %>
<% end %>
</tr>
<% end %>
</table>
请注意,select_all
不起作用,因为每个散列中的键都是无序的,所以您已经失去了查询中指定的结果排序。
不,不工作,因为哈希键无序 – pjb3
的查询并不总是会SELECT *。他们可能会有一些列或列的子集根据聚合计算等。我更新了问题以使其更清楚。 – pjb3
是的,all_arrays正是我所期待的。希望那里有一些非适配器特定的东西,但我确定为sqlite,postgres和mysql开发并不难。谢谢! – pjb3