ROR Обработка атрибута ActiveRecord с обратным вызовом before_update

StackOverflow https://stackoverflow.com/questions/1766350

Вопрос

Этот код создает ActiveRecordError ( Активный код ошибки ):

Обратные вызовы должны быть символом, обозначающим вызываемый метод, подлежащую вычислению строку, вызываемый блок или объект, отвечающий на обратный вызов метод."

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

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

Этот код помещен в мою модель инвентаря, я пытаюсь обработать некоторую логику перед вызовом @inventory.update_attributes (контроллер).Ранее я несколько раз вызывал @inventory.update_attributes, что приводило к коду, который сработало, хотя и не вкратце.

Ваше здоровье!

Это было полезно?

Решение

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top