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!

Foi útil?

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
scroll top