ROR Обработка атрибута ActiveRecord с обратным вызовом before_update
-
21-09-2019 - |
Вопрос
Этот код создает 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
Не связан с StackOverflow