1

このコードは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を複数回呼び出していたため、簡潔ではありませんが、コードは機能していました。

乾杯!

4

1 に答える 1

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
于 2009-11-19T20:55:03.170 に答える