使用回调before_update进行ROR ActiveRecord属性处理

时间:2009-11-19 20:39:48

标签: ruby-on-rails activerecord beforeupdate

此代码生成 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,导致代码worked,尽管不是简洁的。

干杯!

1 个答案:

答案 0 :(得分: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