Skip to content

关于Rails使用Callback和Observer的区别

可以参考:
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.

If you enjoyed this post, make sure you subscribe to my RSS feed!