Non riesco a vedere e, conseguentemente, creare le associazioni tra diversi modelli

I modelli sono:

Company, Category e Classification.
Company
has_many :works
has_many :categories, :through => :works
Category
has_many :works
has_many :companies, :through => :works

di modo che posso fare
company.categories e categories.companies per avere tutte la
categories appartenenti ad una Company e tutte le companies di una
data Category.
Classification ha attributi classification_type e amount che possono
essere modificati cosi’ come posso cancellare o aggiungere
classifications.
Ad una Company possono essere assegnati dei works per Category, quindi
ad esempio, alla company-1 associata a category-2 puo’ essere
assegnato un work, alla company-1 category-4 un altro work e cosi’
via.
A tale work devo associare una Classification di modo che possa sapere
il classification_type e amount della Classification per il work
assegnato alla company-1 associata a category-2.
Non so se sono riuscito a spiegare bene.
Non riesco a creare le associazioni nella maniera corretta.
Vedrei la tabella work, del join model, con attributi
company_id
category_id
classification_id