2011-03-10 12 views
6

मैं क्षेत्र ward_id के साथ एक मेज students है जोड़ सकते हैं और मैं क्षेत्रों id,ward_id, email, guardian_id, hashed_password आदिरेल में एक तालिका बनाएं और विदेशी कुंजी बाधा

अब मैं जोड़ने के लिए साथ guardian_users नाम के एक तालिका बनाने के लिए है बाधा foreign key। छात्रों में कोई अपडेट/डिलीट/एडिट/सम्मिलन guardian_users पर समान प्रभाव होना चाहिए।

मैं इसे रेल 2.3.5 में कैसे कर सकता हूं?

तालिका के छात्र मौजूद हैं लेकिन अन्य अभी तक मौजूद नहीं है।

+0

कोई समस्या नहीं है, लेकिन अभी भी आप – Kracekumar

+0

टिप्पणी कर सकते हैं "पर एक ही प्रभाव होना चाहिए"। –

+0

@apneadiving: एफवाईआई, यह एक काफी बेकार टिप्पणी है। अगर आप ऐसा महसूस करते हैं, तो कुछ क्यों कहें? –

उत्तर

6

आपको या तो foreign_key_migrations प्लगइन या #execute विधि की आवश्यकता होगी। मान लें कि आप प्लगइन के साथ जाना:

class CreateGuardianUsersTable < ActiveRecord::Migration 
    def self.up 
    create_table(:guardian_users) do |table| 
     table.timestamps # I find them useful; YMMV 
     table.integer :guardian_id 
     table.integer :ward_id, :null => false, :references => [:students, :id] 
     table.string :email 
     table.string :heahead_password 
    end 
    end 

    def self.down 
    drop_table :guardian_users 
    end 
end 

और अपने मॉडल में: - हटाए गए व्यापक खोजने का प्रयास करें

class GuardianUser < ActiveRecord::Base 
    belongs_to :student 
end 

class Student < ActiveRecord::Base 
    has_many guardian_users:, :foreign_key => 'ward_id', :class_name => 'GuardianUser', :dependent => :destroy 
end 
+0

यही वह है जो मैंने पाया है, और सही उत्तर, धन्यवाद। – Kracekumar

-2

आपको guardian_users तालिका बनाने के लिए पहले अपना माइग्रेशन जेनरेट करना होगा। आप रेल दस्तावेज़ों से माइग्रेशन और एफके करने के लिए पढ़ सकते हैं। आपको इन मॉडलों में से दो का प्रतिनिधित्व करने वाले किसी भी मॉडल को भी जोड़ने की आवश्यकता होगी जैसे has_many या belong_to।

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