# app/models/post.rb class Post searchable :auto_index => false, :auto_remove => false do text :title text :body end after_commit :resque_solr_update, :if => :persisted? before_destroy :resque_solr_remove protected def resque_solr_update Resque.enqueue(SolrUpdate, self.class.to_s, id) end def resque_solr_remove Resque.enqueue(SolrRemove, self.class.to_s, id) end end # lib/jobs/solr_update.rb class SolrUpdate @queue = :solr def self.perform(classname, id) classname.constantize.find(id).solr_index end end # lib/jobs/solr_remove.rb class SolrRemove @queue = :solr def self.perform(classname, id) Sunspot.remove_by_id(classname, id) end end