2014-10-12 1 views
0

Я искал в Интернете, но мне не повезло, чтобы получить лучший способ сделать это.Как скопировать данные из строки объекта в другую строку объекта из того же класса в rails

У меня есть контроллер, в этом контроллере я выполнить запрос 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) 

, который даст вам Hash формы

{ 
    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 | но теперь он дает ошибку класса nil. Не могли бы вы понравиться, что было бы лучшим подходом @Santosh –

Смежные вопросы