find all by a different association id

I have 3 models here setup like thus:

AttachmentType   has_many :attachments

Attachment   belongs_to :page   belongs_to :attachment_type

Page   has_many :attachments

Attachment belongs to both an AttachmentType & Page.

How can I find all AttachmentType by a page id?

I suppose I could say that AttachmentType has_one :page, but that seems a bit unnecessary.

Page has_many :attachments has_many :attachment_types :through => :attachments

Hmm.. OK I did this and I can grab attachment_types through a page. BUT I can't grab the specific attachments in the attachment_types in a page.. for instance if I try this:

@types = @page.attachment_types <% @types.each do |t| %>       <%= render(:partial => 'partial/attachment', :collection => t.attachments) %> <% end %>

It looks like when I grab attachments from the type, it grabs ALL attachments from that type, not attachments specifically associated to that page. How can I tell it to do a :through, with a model that isn't associated in the AttachmentType model?

OK I think I found the solution:

@types = @page.attachment_types

<% @types.each do |t| %>       <%= render(:partial => 'partial/attachment', :collection => t.attachments.find_all_by_page_id(@page.id)) %> <% end %>

didn't know I could still call the find_all_by_page_id after I called it from a model.