2014-10-12 171 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

相關問題