Я хочу добавить отношение, которое пользователь может принадлежать учителю. Учителя хранятся в таблице администраторов. Обычно это будет никто (ноль), но для активных студентов я бы добавил конкретного человека, который является их учителем в данный момент.
Обычно я думаю, что можно выполнить такую миграцию:
class AddTeacherToUser < ActiveRecord::Migration
def change
add_reference :users, :admin, index: true
end
end
Затем в моделях я мог бы добавить вот что:
class User < ApplicationRecord
belongs_to :admin
...
class Admin < ApplicationRecord
has_many :users
...
Но я хочу, чтобы в моем пользовательском поле был teacher_id, а не admin_id, возможно ли это? я могу переименовать поле в миграции или внутри моей модели?
Версия Rails: 4.2





В Rails 4.2+ вы можете установить внешние ключи в db:
В вашей миграции сделайте:
add_reference :users, :teacher, index: true
add_foreign_key :users, :admins, column: :teacher_id
В вашей модели пользователя выполните:
belongs_to :teacher, class_name: "Admin"
но и для class Admin < ApplicationRecord has_many :users, foreign_key: teacher_id
это именно то, что мне было нужно :)