Создайте таблицу в рельсах и добавьте ограничение внешнего ключа - PullRequest
7 голосов
/ 10 марта 2011

У меня есть таблица students с полем ward_id, и мне нужно создать таблицу с именем guardian_users с полями id,ward_id, email, guardian_id, hashed_password и т. Д.

Теперь я должен добавить ограничение foreign key.Любое обновление / удаление / редактирование / вставка в учениках должно иметь такой же эффект на guardian_users.

Как это сделать в рельсах 2.3.5?

Таблица учеников существует, но другого нетеще.

Ответы [ 2 ]

8 голосов
/ 25 марта 2011

Вам понадобится плагин 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 голосов
/ 10 марта 2011

Сначала вам нужно будет сгенерировать миграцию, чтобы создать таблицу guardian_users. Вы можете прочитать о миграциях из рельсов и документации FK. Вам также нужно будет связать любые модели, которые представляют две из этих сущностей, с такими вещами, как has_many или assign_to.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...