Sync :through association

I have a User class that is associated with Contact through UserContact.

class User   has_many :user_contacts   has_many :contacts, :through => :user_contacts, :source => :contact, :order => 'contacts.last_name ASC' end

UserContact defines a many-to-many relationship with attributes. The problem I have is how to best access the attributes in UserContact without constantly accessing the database. For example:

contacts = user.contacts contacts.each do |contact|   # Do stuff with contact   # How do I access the UserContact instance that through used to access the contact? end

I could do

uc = user.user_contacts.find_by_contact_id(contact.id)

but that results in another database call for each contact.

I suppose I could do something like: user_contacts = user.user_contacts.find(:all, :include => :contact, :order => 'contacts.last_name ASC') user_contacts.each do |uc|   puts uc.contact.last_name   puts uc.attribute_name end

I was hoping there might be another way to work :through backwards from the target. The above will work, but it is not as clean as the :through relationship.