Forum: Rails-ES Optizacion de codigo

Posted by Jose daniel C. (josedaniel_c)
on 2010-11-19 19:22
Hola, soy nuevo en el foro y en ruby, ahora estoy trabajando en un
proyecto con rails y realizando un metodod de comparacion de fechas para
determinar unos estados (cosa que ya he hecho) me he preguntado si este
no se podria simplificar de manera mas adecuada y como podria mejorarlo,

este es el codigo

def asignar_actividad(pedido)
    pedtodo = Pedido.find(pedido)
    p =  pedtodo.pedidoempleados.all
    fecha = Time.now
    datec = pedtodo.fechaentrega
    m = p.size

    for i in 0...m do
      datea = p[i][:fechacambio]
      if i+1 < m
        dateb = p[i+1][:fechacambio]
        if (datea.to_date <= fecha.to_date and dateb.to_date >=
fecha.to_date) and (datea.to_date < dateb.to_date)
          self.actualizar_actividad(p[i][:id].to_s, true)
        else
          self.actualizar_actividad(p[i][:id].to_s, false)
        end
      else
        if i+1 >= m
          if (dateb.to_date <= fecha.to_date and datec.to_date >=
fecha.to_date)
            self.actualizar_actividad(p[i][:id].to_s, true)
          else
            self.actualizar_actividad(p[i][:id].to_s, false)
          end
        else
          if i+1 > m
            #Kill bucle
            break
          end
        end
      end
    end
  end

y otro metodo necesario que se invoca para hacer update al registro a
evaluar

def actualizar_actividad(id, valor)
    pedidoempl= Pedidoempleado.find(id)
    pedidoempl.update_attributes(:actividad => valor)
  end

la idea de este es evaluar las fechas de dos registros a la vez para
verificar cual es mas proxima o esta en el rango de la fecha actual
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.