अपने स्वयं के प्रश्न का उत्तर देने के लिए:कुछ शोध के बाद मुझे पता चला कि रेल (activerecord) को मॉडल पर मैप किए गए टेबल पर आईडी फ़ील्ड की आवश्यकता होती है। यदि आप लिंकटेबल्स का उपयोग करते हैं तो उनकी आवश्यकता नहीं है - लेकिन टेबल के लिए आप मॉडल के रूप में संबोधित करना चाहते हैं, वे हैं। मेरे मामले में समाधान जोड़ना था
set_primary_key :cal_id
जहां cal_id मेरी अनूठी कुंजी है।