在rails中创建一个表并添加外键约束

Kra*_*mar 7 ruby activerecord ruby-on-rails

我有一个表students与现场ward_id,我必须创建一个名为表guardian_users与领域id,ward_id,email,guardian_id,hashed_password等.

现在我必须添加约束foreign key.学生中的任何更新/删除/编辑/插入都应对guardian_users产生相同的影响.

我怎么能在rails 2.3.5中做到这一点?

表学生存在但其他人尚不存在.

Jos*_*ver 8

您将需要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
Run Code Online (Sandbox Code Playgroud)

在你的模型中:

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
Run Code Online (Sandbox Code Playgroud)