2011-03-10 17 views
6

Tengo una tabla con el campo studentsward_id y tengo que crear una tabla llamada guardian_users con campos id,ward_id, email, guardian_id, etc. hashed_passwordCrear una tabla en los carriles y añadir restricción de clave externa

ahora tengo que añadir restricción foreign key. Cualquier actualización/eliminación/edición/inserción en estudiantes debería tener el mismo efecto en guardian_users.

¿Cómo puedo hacer eso en los rieles 2.3.5?

Existen alumnos de tabla pero todavía no existe otro.

+0

No hay ningún problema, pero todavía se puede comentar – Kracekumar

+0

"deben tener el mismo efecto en" - para intentar buscar eliminaciones en cascada. –

+0

@apneadiving: FYI, ese es un comentario bastante inútil. Si te sientes así, ¿por qué decir algo? –

Respuesta

6

Necesitarás el complemento foreign_key_migrations o el método #execute. Suponiendo que vaya con el plugin:

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 

Y en sus modelos:

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

Esto es lo que he averiguado, y estoy ansioso, gracias. – Kracekumar

-2

Primero tendrá que generar su migración para compilar la tabla guardian_users. Puede leer sobre migraciones desde los documentos de rieles y hacer FK. También necesitará asociar cualquier modelo que represente a estas dos entidades con cosas como has_many o belongs_to.

Cuestiones relacionadas