2009-11-19 2 views
1

Этот код производит ActiveRecordError:ROR ActiveRecord атрибута обработки с обратного вызова before_update

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

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 (controller). Раньше я несколько раз вызывал @ inventory.update_attributes, что привело к тому, что код worked, хотя и не лаконично.

Cheers!

ответ

1
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 
Смежные вопросы