<p>Given a model</p>

<pre><code>class BaseModel &lt; ActiveRecord::Base
  validates_presence_of :parent_id
  before_save :frobnicate_widgets
end
</code></pre>

<p>and a derived model (the underlying database table has a <code>type</code> field - this is simple rails STI)</p>

<pre><code>class DerivedModel &lt; BaseModel
end
</code></pre>

<p><code>DerivedModel</code> will in good OO fashion inherit all the behaviour from <code>BaseModel</code>, including the <code>validates_presence_of :parent_id</code>. I would like to turn the validation off for <code>DerivedModel</code>, and prevent the callback methods from firing, preferably without modifying or otherwise breaking <code>BaseModel</code></p>

<p>What's the easiest and most robust way to do this?</p>

From poking around in the source (I'm currently on rails 1.2.6), the callbacks are relatively straightforward.
It turns out that the
```
before_validation_on_create
```
,
```
before_save
```
etc methods, if not invoked with any arguments, will return the array which holds all the current callbacks assigned to that 'callback site'
To clear the before_save ones, you can simply do
```
```
before_save.clear
```
```
and it seems to work