2014-10-12 210 views
0

我一直在线上搜索,但我没有运气来获得最佳方式。如何将数据从一个对象行复制到同一个类中的另一个对象行中

我有一个控制器,该控制器我执行一个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) 

等待任何有用的建议。谢谢。

回答

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] 
+0

谢谢您的回答桑托斯,在我正在使用@ solicitudes_pendientes.each do | solicitud |但是现在它给出了一个无类错误。你能否提出这将是最好的方法@Santosh – 2014-10-28 14:32:41

相关问题