pour répondre à ma propre question:après quelques recherches, j'ai découvert que les rails (activerecord) avaient besoin de champs d'identification sur les tables mappées sur des modèles. si vous utilisez des tables de liens, elles ne sont pas nécessaires - mais pour les tables que vous souhaitez adresser en tant que modèles, elles le sont. dans mon cas, la solution était d'ajouter
set_primary_key :cal_id
où cal_id est ma clé unique.