मैं डेटाबेस स्कीमा का प्रबंधन करने के लिए रेल माइग्रेशन का उपयोग कर रहा हूं, और मैं एक साधारण तालिका बना रहा हूं जहां मैं प्राथमिक कुंजी के रूप में एक गैर-पूर्णांक मान का उपयोग करना चाहता हूं (विशेष रूप से, एक स्ट्रिंग)। मेरी समस्या को दूर करने के लिए, मान लीजिए कि एक तालिका है employees
जहाँ कर्मचारियों को अल्फ़ान्यूमेरिक स्ट्रिंग द्वारा पहचाना जाता है, जैसे "134SNW"
।
मैंने इस तरह से माइग्रेशन में तालिका बनाने की कोशिश की है:
create_table :employees, {:primary_key => :emp_id} do |t|
t.string :emp_id
t.string :first_name
t.string :last_name
end
यह मुझे जो देता है वह ऐसा लगता है जैसे यह पूरी तरह से लाइन को नजरअंदाज कर दिया t.string :emp_id
और आगे बढ़कर इसे पूर्णांक स्तंभ बना दिया। वहाँ एक और रास्ता है कि मेरे लिए PRIMARY_KEY बाधा (मैं PostgreSQL का उपयोग कर रहा हूँ) उत्पन्न कर रहा हूँ, एक execute
कॉल में SQL लिखने के बिना ?
नोट : मुझे पता है कि प्राथमिक कुंजी के रूप में स्ट्रिंग कॉलम का उपयोग करना सबसे अच्छा नहीं है, इसलिए कृपया पूर्णांक प्राथमिक कुंजी जोड़ने के लिए कोई जवाब नहीं दें। मैं वैसे भी एक जोड़ सकता हूं, लेकिन यह प्रश्न अभी भी मान्य है।