我一直在网上搜索,但我没有运气能够做到最好的方法。
我有一个控制器,在该控制器中我执行一个sql查询来检索来自用户的所有请求
@solicitudes = Solicitud.where("user_id = ?",@current_user.id)
我想知道如何将主对象上的每个数据行传输到具有相同状态的所有请求的正确对象。我试过了:
@solicitudes.each do |solicitud|
if solicitud.estado == 1
@solicitudes_pendientes << solicitud
else
if solicitud.estado == 2
@solicitudes_aprobadas << solicitud
else
if solicitud.estado == 3
@solicitudes_rechazadas << solicitud
end
end
end
end
但显然不起作用。
目前我正在使用3个sql查询将所有请求检索到相应的对象中,但需要3次+ 2次额外交易:
@solicitudes_pendientes = Solicitud.where("estado = 1 and user_id = ?",@current_aplicante.id)
@solicitudes_aprobadas = Solicitud.where("estado = 2 and user_id = ?",@current_aplicante.id)
@solicitudes_rechazadas = Solicitud.where("estado = 3 and user_id = ?",@current_aplicante.id)
等待任何有用的建议。谢谢。
答案 0 :(得分:1)
您可以使用Enumerable#group_by
@solicitudes = Solicitud.where(:user_id => @current_user.id).entries.group_by(&:estado)
将为您提供表格的哈希
{
1 => [#<Solicitud estado: 1>, #<Solicitud estado: 1>],
2 => [#<Solicitud estado: 2>, #<Solicitud estado: 2>, ..],
3 => ..,
..
}
您可以像
一样访问它们@solicitudes_pendientes = @solicitudes[1]