重命名已添加到现有模型的相关字段

Rename field in relation added to existing model

我想添加用户可以belongs_to老师的关系。教师存储在 Admins table 中。通常是没有人(nil),但对于活跃的学生,我会添加一个特定的人,他现在是他们的老师。

通常我认为可以做运行这样的迁移:

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+ 中,您可以在数据库中设置外键:

在您的迁移中执行:

add_reference :users, :teacher, index: true
add_foreign_key :users, :admins, column: :teacher_id

在您的用户模型中执行:

belongs_to :teacher, class_name: "Admin"