Subclasses - help required

Seems to me you've solved your own question.

Staff (or "people") is a many-many with projects, with the join table
also acting as a role identifier. Since your join here has attributes
of its own (the role), probably a has_many :through makes more sense.

Something along the lines of:

class Person < AR
  has_many :projects, :through => roles

It might get interesting if you allow a person to have MULTIPLE roles
on a project though.