ROR ActiveRecord atributo de manejo con una devolución de llamada before_update
-
21-09-2019 - |
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!
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