title: When is a "down" migration useful?
body: <p><strong>Short version:</strong></p>
  
  <p>What's up with <code>down</code> migrations? In what scenario(s) would you need to use one?</p>
  
  <p><strong>Long version:</strong></p>
  
  <p>Many frameworks that support database schema versions (including, not limited to, Rails' "migrations") allow the developer to specify how data upgrades (an <code>up</code> operation) can be reversed (aka <code>down</code>), or even automatically generate a downgrade operation by analysing the code (as in Rails' <code>change</code> method).</p>
  
  <p>Indeed, it seems extremely common to do so in all the Rails migration code I've come across, which makes me wonder if it's considered a best practice. </p>
  
  <p>Personally, I've never needed to downgrade a database schema, and I can't imagine a reasonable scenario where I would want to, either in dev or production. My experience seems at odds with the prevalence of <code>down</code> migrations, so I'm guessing I'm missing something...</p>
  
  <p>What are the most common scenarios where a <code>down</code> is useful?</p>