Skip to content

Instantly share code, notes, and snippets.

@lancejpollard
Created August 15, 2010 00:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lancejpollard/524869 to your computer and use it in GitHub Desktop.
Save lancejpollard/524869 to your computer and use it in GitHub Desktop.
require 'rubygems'
require 'active_model'
class BaseModel
extend ActiveModel::Callbacks
define_model_callbacks :save
before_save { puts "[save:before]"}
after_save { puts "[save:after]"}
def do_save; end
def save
_run_save_callbacks do
do_save
end
end
alias_method :superclass_save, :save
end
class SomeModel < BaseModel
def save
puts "[saving...]"
true
end
end
SomeModel.class_eval do
alias_method :subclass_save, :save
alias_method :do_save, :subclass_save
alias_method :save, :superclass_save
end
model = SomeModel.new
model.save
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment