Active Record - Save without Callbacks Plugin
May 8th, 2008
There are a few times, not many, when you really don't want to trigger AR callbacks on a save. Take the following simple example:
class Article < ActiveRecord::Base
include ActionView::Helpers::SanitizeHelper
before_save :sanitize_body_text
def sanitize_body_text
self.body_text = sanitize(self.body_text)
end
end
article.update_attribute(:posted_at, Time.now - 100)
You probably don't want to fire up an expensive method like sanitize when updating the posted_at time.
save_without_callbacks solves that problem.
To Install
./script/plugin install https://tangofoxtrot.com/svn/plugins/save_without_callbacks
On any AR.object that you want to skip the callbacks for:
@something.skip_callbacks = true
*note you cannot set this on mass assignment*
Then call:
@something.save
This plugin can be potentially dangerous! Make sure this is the behavior you want.
For example acts_as_list:
before_create :add_to_list_bottom
before_destroy :remove_from_list
def remove_from_list
if in_list?
decrement_positions_on_lower_items
update_attribute position_column, nil
end
end
If you set skip_callbacks to true and updated the position or created/destroyed an object the positions will be off.
This is best used in a situation where you are updating some arbitrary, non relationship, data.
Xhr Error Catching
February 7th, 2008
One of the more common questions I see from new rails developers is "Clicking an ajax link doesnt do anything." Most web developers use the web developer toolbar extension for firefox (Here). Even then its easy to miss the error message that pops up in console.
I created a simple plugin which will check to see if you made an xhr request, if so it will render the error to a file then bring up a javascript confirm box asking if you want to see the error.
Should be a drop in replacement for rails 2.0.2 and 1.2.6.
script/plugin install http://tangofoxtrot.com/svn/plugins/xhr_rescue_handler
This is my first plugin so please feel free to tear it apart.