Frage

Dieser Code erzeugt ein ActiveRecordError :

  

Rückrufe muss ein Symbol sein Bezeichnen   die Methode aufzurufen, eine Zeichenfolge zu sein   ausgewertet wird ein Block aufgerufen wird, oder   ein Objekt in den Rückruf reagieren   Verfahren. "

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

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

Dieser Code in meinem Inventar Modell platziert ist, ich versuche, eine gewisse Logik vor dem Aufruf zu behandeln @ inventory.update_attributes (Controller). Früher war ich mehrere Male @ inventory.update_attributes Aufruf, der Code zur Folge, dass arbeitete , nicht kurz und bündig allerdings.

Cheers!

War es hilfreich?

Lösung

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top