Create a table in rails and add foreign key constraint
I have a table students
with field ward_id
and I have to create a table named guardian_users
with fields id,ward_id
,email
,g开发者_开发技巧uardian_id
,hashed_password
etc.
Now I have to add constraint foreign key
. Any update/delete/edit/insertion in students should have same effect on guardian_users.
How can I do that in rails 2.3.5?
Table students exists but other one doesn't exist yet.
You'll either need the foreign_key_migrations plugin or the #execute
method. Assuming you go with the 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
And in your models:
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
You're going to have to generate your migration first to build the guardian_users table. You can read up on migrations from the rails docs and doing FK's. You will also need to associate any models that represent the two of these entities with things like has_many or belongs_to.
精彩评论