Auto-subclassing/Factory question

I've got an application that tracks different types of Tasks and the differing tasks have subclasses like PersonalTask and WorkTask. These are stored in the database along with their "type" (type is a column in the database). This allows things like:

p = new PersonalTask("Go shopping") p.save w = new WorkTask("File Reports") w.save all = Task.find(:all) print "First task is of type ", all[0].type.to_s # Prints #<PersonalTask:0x70000000 @attributes{"name"=>"Go shopping", "type"=>"PersonalTask", ...} print "Second task of type ", all[1].type.to_s # Prints #<WorkTask:0x70000000 @attributes{"name"=>"File Reports", "type"=>"WorkTask", ...}

Notice how the type of the object is preserved. Nifty, except use of "type" is deprecated and it should now be "class". Unfortunately this trick doesn't work when you change "type" to "class" as a column in the DB. Since this will completely break when "type" really goes away I was wondering what people suggest as a replacement given there are ~8 types. I'd hate to have to create a factory method the knows about all the types since that seems a little inelegant compared to the auto- subclassing I have now.