Optizacion de codigo

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