5

मैं रेल 5 पर हूं और User मॉडल है।कस्टम नाम और विदेशी कुंजी के साथ संदर्भ

मैं Book मॉडल बनाना चाहता हूं, नाम के साथ User मॉडल का संदर्भ देना चाहता हूं। मैं प्रवासन में विदेशी कुंजी भी सेट करना चाहता हूं।

उत्तर खोजते समय मुझे केवल माइग्रेशन में कॉलम जोड़ें, न कि एक नई तालिका बनाने पर। create_table :books के लिए नीचे कैसा दिखता है?

add_reference :books, :author, references: :users, index: true 
add_foreign_key :books, :users, column: :author_id 
+1

युक्तियाँ: आश्रित को न भूलें: नष्ट या निकालें और इस कॉलम पर एक अनुक्रमणिका जोड़ें। (मैंने अपना जवाब संपादित किया है) –

उत्तर

4

आप author_id उपयोग कर सकते हैं: पूर्णांक

अपने उपयोगकर्ता मॉडल में फिर

:

has_many :books, foreign_key: :author_id, class_name: "Book", dependent: :nullify 

मैं निर्भर का उपयोग करें:: रद्द जब आप एक रिकॉर्ड हटाते हैं तो त्रुटियों से बचने के लिए, लेकिन आप निर्भर का उपयोग कर सकते हैं: यदि आपको आवश्यकता हो तो नष्ट कर दें जब आप उपयोगकर्ता को नष्ट करते हैं तो पुस्तकों को नष्ट कर दें।

और बुक मॉडल:

belongs_to :user, foreign_key: :author_id, class_name: 'User' 

आप इस कॉलम पर एक सूचकांक जोड़ना चाहिए।

-1

अपने पटरियों में जनरेटर बयान:

rails g model Book user:references 
+0

जो 'user_id' के साथ एक सामान्य संदर्भ बनाएगा, लेकिन मुझे' author_id' (लेकिन उपयोगकर्ता मॉडल का संदर्भ देना) चाहिए। –

+0

यह 'लेखक' मॉडल रखने के लिए और अधिक समझ में आता है ताकि हम 'लेखक: संदर्भ' कह सकें। जब भी हम 'someting_id' देखते हैं तो सर्वोत्तम प्रथाओं के अनुरूप रहना हम स्वचालित रूप से जानते हैं कि यह' कुछ' मॉडल से संबंधित है। खुद को उस प्रिंसिपल के साथ गठबंधन रखने की कोशिश करें। – meshpi

संबंधित मुद्दे