Pregunta

Este código produce un ActiveRecordError :

  

Las devoluciones de llamada debe ser un símbolo que denota   el método a llamar, que una cadena se   evaluado, un bloque para ser invocada, o   un objeto de responder a la devolución de llamada   método ".

before_update :check_instock, :unless => Proc.new { |inventory| inventory.needed.nil? } 

def check_instock
  if needed < amount
    instock = true
  else
    instock = false
  end
end

Este código se coloca en mi modelo de inventario, estoy tratando de manejar algo de lógica antes de llamar a @ inventory.update_attributes (controlador). Anteriormente estaba llamando @ inventory.update_attributes varias veces, lo que resultó en el código que trabajado, aunque no de manera sucinta.

Saludos!

¿Fue útil?

Solución

before_update :set_instock, :unless => :inventory_not_needed?

private

def set_instock
  self.instock = (needed < amount) ? true : false
end

def inventory_not_needed?
  needed.nil?
end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top