ROR ActiveRecord Atributo Manuseio com um retorno de chamada antes do _Update
-
21-09-2019 - |
Pergunta
Este código produz um ActiveRecorderror:
Os retornos de chamada devem ser um símbolo que denota o método para chamar, uma string a ser avaliada, um bloco a ser chamado ou um objeto que responde ao método de retorno de chamada ".
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 é colocado no meu modelo de inventário, estou tentando lidar com alguma lógica antes de ligar para @inventory.update_attributes (controlador). Anteriormente, eu estava ligando para @inventário.update_attributes várias vezes, o que resultou em código que trabalhado, embora não sucintamente.
Felicidades!
Solução
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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow