20110812135951_move_issue_trackers_to_sti.rb 957 Bytes
class MoveIssueTrackersToSti < Mongoid::Migration
  def self.up
    App.all.each do |app|
      # Update all embedded issue trackers to use STI patterns.
      # All issue trackers now subclass the IssueTracker model,
      # and their class is stored in the '_type' field, which is
      # also aliased to 'type'.
      if app.issue_tracker && app.issue_tracker.attributes["issue_tracker_type"]
        app.issue_tracker._type = case app.issue_tracker.issue_tracker_type
        when 'lighthouseapp'; "LighthouseTracker"
        when 'redmine'; "RedmineTracker"
        when 'pivotal'; "PivotalLabsTracker"
        when 'fogbugz'; "FogbugzTracker"
        when 'mingle'; "MingleTracker"
        else; nil
        end
        if app.issue_tracker.issue_tracker_type == "none"
          app.issue_tracker = nil
        else
          app.issue_tracker.issue_tracker_type = nil
        end
        app.save
      end
    end
  end

  def self.down
  end
end