2011-03-10 31 views
6

ward_id alanlı bir tablo students var ve id,ward_id, email, guardian_id, hashed_password vs.Raylarda bir tablo oluşturun ve yabancı anahtar kısıtlaması ekleyin

ile guardian_users isimli bir tablo oluşturmak zorundayım. Şimdi foreign key kısıtlaması eklemek zorundayım. Öğrencilerdeki herhangi bir güncelleme/silme/düzenleme/ekleme, guardian_users'da aynı etkiye sahip olmalıdır.

Bunu raylarda nasıl yapabilirim 2.3.5?

Tablo öğrencileri var ama diğer biri henüz mevcut değil.

+0

Hiçbir sorunları, ama hala – Kracekumar

+0

yorum yapabilir "aynı etkiye sahip olmalıdır". –

+0

@apneadiving: FYI, bu oldukça işe yaramaz bir yorum. Eğer böyle hissedersen, neden bir şey söyle? –

cevap

6

foreign_key_migrations Eklentisine veya #execute yöntemine gereksiniminiz vardır.

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 

Ve modeller: Eğer eklenti ile gitmek varsayarsak - siler basamaklı aramayı deneyin

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

Bu öğrendiğim şey, ve doğru ans, Teşekkürler. – Kracekumar

-2

Guardian_users tablosunu oluşturmak için önce geçişinizi oluşturmanız gerekecektir. Raylar dokümanlarındaki göçleri ve FK'leri okuyabilirsiniz. Ayrıca, bu varlıkların ikisini temsil eden modelleri, has_many veya belongs_to gibi şeylerle ilişkilendirmeniz gerekir.

İlgili konular