可以参考:

http://stackoverflow.com/questions/1531514/observers-vs-callbacks

其中有一段是这样的:

class Model < ActiveRecord::Base
  before_update :disallow_bob

  def disallow_bob
  return false if model.name == "bob"
  end
end

class ModelObserver < ActiveRecord::Observer
  def before_update(model)
    return false if model.name == "mary"
  end
end

m = Model.create(:name => "whatever")

m.update_attributes(:name => "bob")
=> false -- name will still be "whatever" in database

m.update_attributes(:name => "mary")
=> true -- name will be "mary" in database

Observers may only observe, they may not intervene.

转载请注明:韦旭红的点点滴滴 » 关于Rails使用Callback和Observer的区别