ActiveRecord Observers are a very handy thing for plugins

Posted by Tim Connor Sun, 22 Oct 2006 21:58:00 GMT

While developing the first piece of the typo-permalink-with-id plugin I spent a lot of time trying to get the module extend/include and module_eval stuff just right so that my code had everything it needed to not through an error when trying to add a after_create to the app code itself. After a bunch if google around I found exactly what I need in teh v2 Agile book. It wasn’t something plug-in specific, but it is a godsend to plugin writers: ActiveRecord:Observer.

Instead of trying to get your after/before code properly mixed into the app code, you can have it nice and cleanly attached via an Observer. All of a sudden my code became very simple.

module TypoPermalinkWithId
  class ArticleObserver < ActiveRecord::Observer
    observe Article
    def after_create(article)
      article.permalink = "#{article.id}-#{article.permalink}" 
      article.save
    end
  end
  ArticleObserver.instance
end
Comment form

(leave url/email »)

Help with Textile (code)