Named scopes for instances
Here is another way to filter people by role:

class Participation &lt; ActiveRecord::Base
  belongs_to :toon
  belongs_to :person

  validates :role, :presence =&gt; true
end

class Person &lt; ActiveRecord::Base
  has_many :participations
  has_many :toons, :through =&gt; :participations
end

class Toon &lt; ActiveRecord::Base
  has_many :participations
  has_many :people, :through =&gt; :participations do
    def with_role(role)
      where('participations.role' =&gt; role)
    end
  end
end


Now, you can get the people fitered by role: toon.people.with_role('producer').